Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;“未定义结构”;创建对象时出错 我正在研究一个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 - Fatal编程技术网

&引用;“未定义结构”;创建对象时出错 我正在研究一个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库。我的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

当创建像s1和s2这样的指针时,一切都正常。但是,对象不能很好地工作。生成以下错误:

使用未定义的结构时出错

如何创建像s3和s4这样的对象?

变量:

__struct1__ *s1
只是指针类型(指向您的结构,但仍然只是指针),所以编译器确切地知道这个变量在堆栈上需要多少内存。但在下列情况下:

__struct3__ s3

此变量的类型为uuu struct3 uuuuuuuuuuu,因此如果没有完整定义,编译器将不知道其大小。

请确保
\uuuuuuu struct4 uuuuuuuuuuuuuuu>具有完整定义,而不仅仅是声明。如果没有告诉编译器,
\uuuuuu struct4\uuuuuuuuuu
中会有什么内容,编译器怎么知道呢!?编译器的可能副本总是知道指针的大小(因此它总是能够创建指针)。编译器永远不知道用户定义类型的大小,除非它的定义已经满足(这里,您没有定义s3和s4的类型,因此编译器不知道如何处理它们),但我如何告诉编译器该怎么做呢?请注意,以双下划线开头的名称是为“实现”保留的,不应由您创建。