2010-02-04 74 views
4

请看下面的程序。为什么我得到一个错误?g ++中的C++链接错误

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 
+5

这是*不* **编译错误**,那就是**链接错误** – 2010-02-04 14:36:57

+0

使用s.c_str(),以获得从的std :: string一个 “C风格” 字符串,S .data()不保证以null结尾。 – 2010-02-04 14:39:35

回答

8

静态成员变量必须在你的.cpp文件的一个存储分配:

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

你有

#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); 
} 

中联,我试图链接时出现此错误只是在类中声明了静态成员,但尚未定义它们。你需要在课堂外定义它们。

//definition 
int serverData::serverTemp; //implicitly initialized to 0 
int serverData::server = 5; // initialized to 5 
+0

你确定第一个被初始化了吗? – 2010-02-04 14:42:51

+0

@Martin:是的,我很确定。 – 2010-02-04 14:44:35