【Debug】— C++ 表示式必須包含類型別
阿新 • • 發佈:2019-01-28
錯誤一般發生在使用.
進行訪問時,原因可能在於:
- 你以為你定義了一個類物件,其實你是聲明瞭一個函式,在編譯器看來;
對類物件指標採用
.
的方式訪問其成員變數;- 也包括基本型別變數,錯誤地使用
.
int a = 10; a.foo(); // 顯然會提示“錯誤:表示式必須包含類型別”
- 也包括基本型別變數,錯誤地使用
1. 情況 1
class Test{
public:
Test(){ }
void foo(){ }
};
int main(int, char**){
Test t(); // 編譯器會將 t 視為一個函式;
t.foo(); // 出錯,表示式必須包含類型別
return 0;
}
修改方法:
// 物件的定義,修改為:
Test t;
當建構函式中存在一些引數時:
class Test{
public:
Test(int i) {} // 但要避免預設單參建構函式:Test(int i = 0) {}
...
}
int main(){
Test t(5);
...
}
2. 情況 2
Test* t = new Test(5);
// 錯誤訪問成員函式的形式:
t.foo();
// 正確寫法:
t->foo();