前一天晚上,当我的Visual Studio编译器开始表现异常时,我正在编码,它给了我LNK1120错误,我终于设法以某种方式解决了这个问题,但是不久之后,我再次遇到了它。我写了一个简单的头文件,该文件包含在main.cpp文件中。这是错误的一个实例:
private:
string _ime;
static int randid;
int _magen, _id;
在此我得到
Error LNK2001 unresolved external symbol "private: static int Karta::randid" (?randid@Karta@@0HA).
静态int用于为我的类中的对象生成一个ID号。另一个错误是
Error LNK2019unresolved external symbol "class Polje __cdecl s(void)" (?s@@YA?AVPolje@@XZ) referenced in function _main.
两者都是相当简单的类,但我不知道这意味着什么。我读过链接器找不到对象的定义,但我似乎无法弄清楚哪个对象?我在这两个标头上都有标头防护。如果有人可以帮忙,那真是太棒了!预先谢谢!
需要在类外定义一个(非常量)静态成员变量。
class foo {
private:
static int randid;
};
int foo::randid; // definition
该定义通常应该在源文件中,而不是在标头中,因此您将没有该变量的多个定义。