Tom*_*ght -2 c++ struct initialization class
当我尝试使用这种通用格式的代码时,我收到编译器的错误:
在classname.hpp中
#include "otherclass.hpp"
class classname {
public:
typedef struct {
otherclass membername(sometype);
} structname;
void functionname(structname& exampleData);
}
Run Code Online (Sandbox Code Playgroud)
在main.cpp中,我定义了一个变量exampleData:
classname::structname exampleData;
Run Code Online (Sandbox Code Playgroud)
在classname.cpp中,我有一个使用exampleData的函数,并尝试初始化struct的成员,membername:
void classname::functionname(structname& exampleData){
sometype a;
exampleData.membername(a);
}
Run Code Online (Sandbox Code Playgroud)
我从编译器收到错误说明:
未定义的符号:
classname::structname::membername(sometype)"classname::functionname(classname::structname&)在classname.o中引用.ld:符号未找到
我认为我的错误在于线
otherclass membername(sometype)
Run Code Online (Sandbox Code Playgroud)
我还以为它可能是:
otherclass membername(sometype& a)
Run Code Online (Sandbox Code Playgroud)
但我收到了同样的错误.
我想知道这是否合法,在构造函数不是()的类中的结构中有一个成员.在main.cpp中,当我声明exampleData时,membername尚未初始化.这是合法的还是我在错误的地方打猎?
您获得的错误看起来很像由于函数classname::structname::membername未在任何地方定义而导致的链接器错误.从您发布的代码中,看起来您刚刚声明了函数而没有在任何地方提供定义,这意味着代码将编译但不会链接.您应该能够通过在程序中的某个位置提供函数的实现来解决此问题.它与参数是否通过引用无关; 在这两种情况下,您仍然需要提供实现.