初始化类中结构中的成员(其构造函数接受参数)
Initialize Members (whose constructors accept arguments) in a struct in a class
当我尝试使用以下通用格式的代码时,我收到了来自编译器的错误:
在类名.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)
"引用自类名.o.ld:找不到中的classname::functionname(classname::structname&)
我认为我的错误在范围内
otherclass membername(sometype)
我还认为可能是:
otherclass membername(sometype& a)
但我收到了同样的错误。
我想知道这样做是否合法,在构造函数不是()的类中的结构中有一个成员。在main.cpp中,当我声明exampleData时,membername还没有初始化。这合法吗?还是我在错误的地方狩猎?
您得到的错误看起来很像是由于函数classname::structname::membername
没有在任何地方定义而导致的链接器错误。从您发布的代码来看,您似乎只是声明了函数,而没有在任何地方提供定义,这意味着代码将编译而不是链接。您应该能够通过在程序中的某个位置提供函数的实现来解决此问题。它与参数是否被引用无关;在这两种情况下,您仍然需要提供一个实现。
相关文章:
- 将成员函数作为构造函数参数调用时出错 "Variable is not a type name"
- 在按值调用 (c++) 中转发构造函数参数
- 如何使用 swig 修改类构造函数以保留对其中一个构造函数参数的引用?
- 如何在构造函数参数中初始化"std::set"?
- 何时应在构造函数参数中使用 const C++?
- 使用模板化结构作为构造函数参数
- 使用 lambda 作为构造函数参数是否需要C++ 17?
- 如何使输入文本文件成为构造函数参数?c++
- shared_ptr构造函数参数是否应按值传递
- 是否允许使用初始值设定项列表将const数组引用实例化为构造函数参数
- 复制构造函数参数为0
- 用作成员构造函数参数的函数的求值顺序
- 结构中的默认成员值或默认构造函数参数
- C++将引用成员绑定到构造函数参数
- 如何通过可变参数模板将多个构造函数参数转发到数组初始值设定项列表?
- 模板函数指针参数与构造函数参数
- 如何将 std::string 作为构造函数参数传递,并将其保存的 C 字符串存储在 void 指针中?
- 如何基于构造函数参数模板化类成员函数的代码
- 将派生类构造函数参数传递给受保护的成员
- 如何根据构造函数参数使用超类类型初始化成员变量?