2016-11-30 27 views
0

所以我test.h其中包含:無法從另一頭文件調用函數時不在主

#ifndef TEST_H_ 
#define TEST_H_ 

class test { 
public: 
    int value; 
}; 

#endif /* TEST_H_ */ 

和我main.cpp

#include "test.h" 

class Magic { 
    test x; 
    x.value = 2; // Syntax error 
}; 

int main() { 
    test y; 
    y.value = 2; // Works fine 

    return 0; 
} 

這究竟是爲什麼?

+1

你不能把任意代碼像這樣一類的聲明。這就是語言的定義。 – Borgleader

+2

你從中學到了什麼書/教程,代碼是這樣寫的? –

+0

所以要使用'test'我必須在主要功能? – SomeoneWithAQuestion

回答

3

像這樣分配值在c++的類定義中是無效的語法。這個錯誤與頭文件無關。嘗試將所有內容放在一個文件中,您將看到相同的行爲。

如果你想有x.value的默認初始化爲2的Magic每個實例的Magic構造函數定義如下:

class Magic { 
    test x; 
    Magic() { 
    x.value = 2; 
    } 
};