2012-02-03 9 views
1

ここでは私のコードです:どのように私はエラーC2059を解決することができます:構文エラー:「string」は」

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"){} 'は十分でしょうか? –

+0

私は理解していると思います。だから、Barクラスのコンストラクタでbuを初期化する必要がありますか? – Jcrack

+0

私はとても混乱しています。私は別のクラスでクラスを使用したいときはいつでもこれを行う必要がありますか? – Jcrack

関連する問題