यह कानूनी एक struct
एक सी struct
C++ आगे घोषित सी struct परिभाषित करें - <code>struct</code> यानी के रूप में एक गैर-पॉड, - struct
// api.h
#ifdef __cplusplus
extern "C" {
#endif
typedef struct handle_tag handle_t;
handle_t *construct();
void destruct(handle_t *h);
void func(handle_t *h);
#ifdef __cplusplus
}
#endif
और बाद में एक सी ++ के रूप में यह परिभाषित के रूप में आगे-घोषित करने के लिए है प्रकार?
// api.cpp
struct handle_tag {
void func();
std::string member;
};
void func(handle_t *h) {
h->func();
}
सामान्य इरादा एक सी इंटरफेस बाह्य रूप से सुलभ अपारदर्शी प्रकार handle_t
जो आंतरिक रूप से एक सी ++ डेटा प्रकार के रूप कार्यान्वित किया जाता है के माध्यम से प्राप्त करने के लिए है।
संयोग से, पीओडीनेस सी बनाम सी ++ लिंकेज से असंबंधित है। सी ++ नामों को इस बात पर ध्यान दिए बिना कि वे पीओडी हैं या नहीं। –
@ कोनराड्रूडॉल्फ वह संरचना पीओडी नहीं है –
@ BЈовић ठीक है, कोई भी दावा नहीं किया, नहीं? –