&引用;“未定义结构”;创建对象时出错 我正在研究一个C++项目,它链接到C库。我的C++类如下: extern "C" { struct __struct1__; struct __struct2__; struct __struct3__; struct __struct4__; } namespace mynamespace { class MyClass : public Parent { public: .... private: .... __struct1__* s1; __struct2__* s2; struct __struct3__ s3; struct __struct4__ s4; }; }
当创建像s1和s2这样的指针时,一切都正常。但是,对象不能很好地工作。生成以下错误: 使用未定义的结构时出错 如何创建像s3和s4这样的对象?变量:&引用;“未定义结构”;创建对象时出错 我正在研究一个C++项目,它链接到C库。我的C++类如下: extern "C" { struct __struct1__; struct __struct2__; struct __struct3__; struct __struct4__; } namespace mynamespace { class MyClass : public Parent { public: .... private: .... __struct1__* s1; __struct2__* s2; struct __struct3__ s3; struct __struct4__ s4; }; },c++,c,linker,C++,C,Linker,当创建像s1和s2这样的指针时,一切都正常。但是,对象不能很好地工作。生成以下错误: 使用未定义的结构时出错 如何创建像s3和s4这样的对象?变量: __struct1__ *s1 只是指针类型(指向您的结构,但仍然只是指针),所以编译器确切地知道这个变量在堆栈上需要多少内存。但在下列情况下: __struct3__ s3 此变量的类型为uuu struct3 uuuuuuuuuuu,因此如果没有完整定义,编译器将不知道其大小。请确保\uuuuuuu struct4 uuuuuuuuuuuu
__struct1__ *s1
只是指针类型(指向您的结构,但仍然只是指针),所以编译器确切地知道这个变量在堆栈上需要多少内存。但在下列情况下:
__struct3__ s3
此变量的类型为uuu struct3 uuuuuuuuuuu,因此如果没有完整定义,编译器将不知道其大小。请确保
\uuuuuuu struct4 uuuuuuuuuuuuuuu>具有完整定义,而不仅仅是声明。如果没有告诉编译器,\uuuuuu struct4\uuuuuuuuuu
中会有什么内容,编译器怎么知道呢!?编译器的可能副本总是知道指针的大小(因此它总是能够创建指针)。编译器永远不知道用户定义类型的大小,除非它的定义已经满足(这里,您没有定义s3和s4的类型,因此编译器不知道如何处理它们),但我如何告诉编译器该怎么做呢?请注意,以双下划线开头的名称是为“实现”保留的,不应由您创建。