用g ++链接C ++中的错误

时间:2010-02-04 14:34:46

标签: c++ linker g++

请看下面的程序。为什么我收到错误?

#include <stdlib.h>
#include <string>
#include <string.h>
#include <iostream>


using namespace std;

class serverData
{
public:
    static int serverTemp;
    static int server;
};
int main(int argc, char** argv)
{
    string s = "sajad bahmani";
    serverData::server = 90 ;

    const char * a = s.data();
    cout << a[0] << endl;

    return (EXIT_SUCCESS);
}

结合使用时,我在尝试链接时遇到此错误:

build/Debug/GNU-Linux-x86/main.o: In function `main':
/home/sb23/pr/main.cpp:14: undefined reference to `serverData::server'
collect2: ld returned 1 exit status

2 个答案:

答案 0 :(得分:8)

静态成员变量必须在其中一个.CPP文件中分配存储空间:

/* static */
int serverData::serverTemp;
int serverData::server;

答案 1 :(得分:2)

您刚刚在类中声明了静态成员但尚未定义它们。你需要在课外定义它们。

//definition
int serverData::serverTemp; //implicitly initialized to 0
int serverData::server = 5; // initialized to 5
相关问题