1. 程式人生 > >【Debug】— C++ 表示式必須包含類型別

【Debug】— C++ 表示式必須包含類型別

錯誤一般發生在使用.進行訪問時,原因可能在於:

  • 你以為你定義了一個類物件,其實你是聲明瞭一個函式,在編譯器看來;
  • 對類物件指標採用.的方式訪問其成員變數;

    • 也包括基本型別變數,錯誤地使用.
    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();