我有一個跨越兩個文件的類。它在declare.h文件中聲明,並在define.cpp文件中定義。C++中的代碼組織
define.h
class A{
public: int a;
void func(){ a = some_other_func(); }
A();
};
define.cpp
A::A(){
a =0;
}
總體思想是在一個內聯函數使用它之前初始化在構造函數中的變量。但構造函數定義和函數定義在不同的文件中。這有什麼問題嗎?
這通常不是一個好的做法,除非'declare.h'包含'define.h';在這種情況下,'define.h'被稱爲私有或實現部分;通常人們把它命名爲'declare_priv.h' ... –
它是'define.h'還是'define.cpp'?你的問題提到兩個! –
請注意'A :: A()'內部的'int a = 0;'不會初始化'int A :: a;'!實際上你正在聲明一個局部變量。它應該是簡單的'a = 0;'或甚至更好的擁有'A :: A():a(0){}' – iammilind