2016-04-09 8 views
-1

私はこの小さなコードで作業しています。私はadvStringadvString_streamという2つのクラスを作成しました。ここで、クラスは次のとおりです。C++でオブジェクトを作ることに問題がある

class advString 
{ 
public: 
    string s_value; 
    int i_value; 
    advString(string s) : s_value(s) {} 
    advString(int i) : i_value(i) {} 
}; 
//-------------------------------------------------------------------------------- 
class advString_stream 
{ 
public: 
    advString get(); 
    void putback(advString as); 
private: 
    advString buffer; 
    bool full = false; 
}; 
//-------------------------------------------------------------------------------- 

そして、後でダウンのコードで、私はこのオブジェクトを定義します。それが私のために働く必要がありますように思え

advString_stream ads; 

が、私は、コードを実行するたびに、それは

'advStream::advStream(void)': attempting to reference a deleted function

誰かが私を助けることができますか?私はコンパイラが不平を言うことなくadvString_streamを作るように見えることはできません。

+0

'advString(string s)'が 'advString(const string&s)'のほうが良いでしょう。 –

+0

関連のないメモでは、 'advString_stream :: get'関数が値*参考として? –

+0

@JoachimPileborg「参考文献」とはどういう意味ですか?これは、advStringをバッファから取り出すか、またはb)cinから取り出します。 – jiggumbob

答えて

2

含まれているadvStringオブジェクト(bufferメンバー)にはデフォルトコンストラクタがないため、bufferオブジェクトを正しく構築するには、advString_streamコンストラクタを明示的に指定する必要があります。あなたは他のコンストラクタを宣言して実装する場合、デフォルトのコンストラクタを宣言し、実装する必要があり

class advString_stream 
{ 
public: 
    advString_stream() 
     : buffer(someArgumentHere) // Using constructor initializer list 
    {} 

    ... 
}; 
+0

どうすればいいですか? – jiggumbob

+0

@jibboom更新の回答 –

2

よう

何か。

+0

私はそれをどのようにして正確に行いますか? – jiggumbob

関連する問題