1

コピーできないクラスを含むコードベースを使用する必要があります。それらは、代入演算子とコピー コンストラクターを非公開として宣言しています。クラスでこれらの型のメンバーを初期化するにはどうすればよいですか? 例えば:

class non_copyable; // defined somewhere. 
                    // constructor receives a parameter of type `normal_class'
// my_class.hpp
class my_class {
public:
    my_class();
    virtual ~my_class();
private:
    normal_class good_one;
    non_copyable trouble;
};
my_class::my_class() :
        good_one(normal_class(0,0)), 
        trouble(non_copyable(good_one)) { // ====> error
}

non_copyable現在、 inへのポインタを使用していますmy_class

4

3 に答える 3

8

trouble一時non_copyableインスタンスから構築しているため、ここではコピー コンストラクターを呼び出しています。

trouble(non_copyable(good_one))
//        ^^^ temporary non_copyable.

これを試して:

trouble(good_one)
于 2013-06-14T12:49:46.987 に答える
2

あなたは自分のために問題を起こします

my_class::my_class() :
        good_one(normal_class(0,0)), 
        trouble(non_copyable(good_one))

公正であるべき

my_class::my_class() :
        good_one(0,0), 
        trouble(good_one)
于 2013-06-14T12:53:53.660 に答える