C ++中对类成员的“未定义”引用

亚历山大·亚历山大·克里夫(AlexanderAleksandrovičKlimov)

链接此代码时:

#include <map>
using std::map;
#include <string>
using std::string;
class C {
public:
    static void dump() {
        for (const auto& e : data) {
            string(e.first);
        }
    }
private:
    static map<string,map<string,string>> data;
};
int main() {
    C::dump();
}

...我得到这个错误:

/tmp/cc4W2iNa.o: In function `C::dump()':
test.cpp:(.text._ZN1C4dumpEv[_ZN1C4dumpEv]+0x9): undefined reference to `C::data'
collect2: error: ld returned 1 exit status

...来自g ++(GCC)4.9.1。我做错什么了吗?

迈克·西摩

您已声明C::data,但未定义它。在类外添加一个定义:

map<string,map<string,string>> C::data;

在一个较大的程序中,该程序具有多个源文件,必须将此文件仅放入一个源文件中才能满足“一个定义规则”。而类定义(包括的声明data)可能会放在标头中,以在任何需要的地方可用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

类c ++中的静态成员未定义引用

C ++对动态创建的类成员的功能的未定义引用

在构造函数中使用类成员时的C ++未定义引用

C Opengl中的未定义引用

对C ++中函数的未定义引用

C 中对 (FUNCTIONNAME) 的未定义引用

C ++ 17中静态成员lambda函数中未定义的类类型

C ++无法从类中调用公共方法:未定义对'<ClassName> :: <MethodName>'的引用

C ++未定义的引用

c ++对头文件外部定义的成员函数的未定义引用

在C ++中链接静态库时对...的未定义引用

QT C ++中对全局变量的未定义引用

我的代码中的C ++未定义引用错误?

在最小的C程序中未定义对“ main”的引用

在C编程中,什么是“未定义引用”错误?

在函数中未定义的引用 c++

C ++中的“未定义引用”运算符重载

在C程序中未定义对函数的引用

C中对mat.h的未定义引用

C++ 主方法中的“未定义引用”

编译时SIFT代码(C ++)中的未定义引用

GetPhysicallyInstalledMemory 函数 - C 中未定义的引用

如何解决对自己的 C++ 成员函数的未定义引用?

C ++对共享库中类的构造函数和析构函数的未定义引用错误

Blackberry在无头应用程序中的QML中使用C ++类:未定义对`bb :: device :: VibrationController :: staticMetaObject'的引用

C ++类和继承错误:对派生类的未定义引用

C ++:私有类指针成员返回未定义的值

对类的静态成员的未定义引用

对静态类成员的未定义引用