【发布时间】:2011-06-15 23:09:06
【问题描述】:
当我尝试使用这种通用格式的代码时,我收到来自编译器的错误:
在类名.hpp中
#include "otherclass.hpp"
class classname {
public:
typedef struct {
otherclass membername(sometype);
} structname;
void functionname(structname& exampleData);
}
在main.cpp中,我定义了一个变量exampleData:
classname::structname exampleData;
在 classname.cpp 中,我有一个使用 exampleData 并尝试初始化结构的成员 membername 的函数:
void classname::functionname(structname& exampleData){
sometype a;
exampleData.membername(a);
}
我从我的编译器收到一条错误消息:
未定义符号:
classname::structname::membername(sometype)" 引用自 classname.o 中的classname::functionname(classname::structname&)。ld:未找到符号
我认为我的错误在这条线之内
otherclass membername(sometype)
我也认为可能是:
otherclass membername(sometype& a)
但我收到了同样的错误。
我想知道这样做是否合法,在构造函数不是 () 的类的结构中拥有一个成员。在 main.cpp 中,当我声明 exampleData 时,membername 尚未初始化。这是合法的还是我在错误的地方打猎?
【问题讨论】:
-
您的代码不可能是正确的,缺少大量分号。修复代码并再次检查。此外,您的函数
functionname只是 hpp 文件中的全局(免费)函数,而不是成员函数。 -
-1 未发布真实代码(例如,发布的代码缺少分号)。我们不是心灵感应者。我投票结束,因为这不是一个真正的问题。
-
-1 表示未发布导致错误的编译器命令。如果是链接器错误,我们应该能够验证您是否已将所有相关模块链接在一起。
-
你为什么要
typedef struct {...} structname;?它不是 C,请学习正确的 C++。只需写struct structname{...};。 -
@PawelZubrycki 如果它在 C++ 中编译,那么它是正确的 C++。
标签: c++ class struct initialization