2016-03-04 45 views
1

我有以下幾點:在struct構造函數中用「this」關鍵字編譯錯誤? - C++

int main() 
{ 
    struct A 
    { 
     unsigned char x, y; 

     A(unsigned char x, unsigned char y) 
     { 
      this.x = x; // Error: expression must have class type. 
      thix.y = y; // Error: expression must have class type. 
     } 
    }; 

    return 0; 
} 

如何正確指struct A而不是A構造函數參數的xy變量的xy變量?

謝謝。

+0

@PaulMcKenzie \t即使是結構體也沒有構造函數? – Hatefiend

+1

'this'總是指針。使用'this->'或'(* this)'對其進行解引用。 –

+1

@Hatefiend「C」語言沒有構造函數,沒有析構函數,也沒有成員函數等,這就是爲什麼'C'標記被刪除的原因。 – PaulMcKenzie

回答

5

this是一個指針,所以你需要取消對它的引用:

this->x = x; 
this->y = y; 

如果它是一個structclass,它在這兩種情況下的指針沒關係。兩者之間唯一的區別是struct成員默認爲public,而class成員默認爲private

此外,在函數內部定義structclass並不是一個好主意。改爲在全球範圍內進行。

+0

所以....在類構造函數中,我可以使用'this.VARIABLE_NAME_HERE',但是'struct'我必須使用指針符號' - >'? – Hatefiend

+1

在C++中,這總是一個指針,在一個類以及一個結構體中。 – badgerr

+0

啊我明白了。所以格式'this.variable'在C++中沒有意義? – Hatefiend