2012-02-03 121 views
1

這裏是我的代碼:我該如何解決錯誤C2059:語法錯誤:「串」」

class Foo 
{ 
    public: 
    Foo(const char*); 
}; 

class Bar 
{ 
    public: 
    Foo bu("adfds"); 
}; 

int main() 
{ 
    return 0; 
} 

Foo::Foo(const char* iLoc) 
{ } 

當我嘗試了Bar類中創建一個Foo類,試圖當我得到的語法錯誤傳遞給構造函數。爲什麼會出現這種情況?

回答

3

我喜歡這egrunin的答案,因爲你沒有跟蹤內存分配。

class Bar 
{ 

private: 

    Foo bu; 

public: 

    Bar() 
    : bu("adfds") 
    { 
    } 

}; 
2

類聲明中你不能初始化bu。這是你想要的嗎?

class Bar 
{ 
public: 
    Foo *bu; 

    Bar() { 
     bu = new Foo("adfds"); 
    } 
}; 

編輯

正如在評論中指出,這裏是做不做bu指針的方法:

class Bar : bu("adfds") 
{ 
public: 
    Foo bu; 
}; 
+2

當然'Bar():bu(「adfds」){}'就夠了嗎? – 2012-02-03 04:38:40

+0

我想我明白了..所以我必須在Bar類構造函數中初始化bu? – Jcrack 2012-02-03 04:40:37

+0

我很困惑..所以我必須隨時做這個任何時候我想在另一個班級使用一個班級? – Jcrack 2012-02-03 04:49:25