2011-01-28 3 views
0

このコードに何が問題なのかを私に見せたい人が必要です。私は何が間違っているのか分からない。私はコードが何か意味のあることをしていないことを知っていて、それを使うことはできません。コピーコンストラクターの仕組みを知るために作成しました。コンストラクタエラーをコピーします

class test 
{ 
    public: 

    int* value; 

    public: 

    int getvalue() 
    {return *value;}; 

    test(int x){ value = new int(x);}; 

    test(const test& a) 
    { 
     value=new int; 

     *value = a.getvalue(); 
    }; 
}; 
+2

本当にポインタを使用しますか? –

答えて

2

あなたはコピーコンストラクタでconst参照にgetvalue()を呼び出すようにしようとしているので、あなたは、int getvalue() constgetvalue()の宣言を変更する必要があります。

1

迷子があります。各メソッド定義の後でコンパイルされません。

class test { public: 

int* value; 

public: 

int getvalue() 
{return *value;} 

test(int x){ value= new int(x);} 

test(const test& a) 
{ 
    value=new int; 

    *value = a.getvalue(); 
} 


}; 

また、「テスト」はクラス名として使用しないでください。マクロや他のスコープ内の名前であれば、使用しているプラ​​ットフォームによって異なります。 「MyTest」などを使用してください。

+0

解決策は、constメンバー関数としてgetvalue()を宣言していました。しかし、私は余分にたくさん置くことを知っていただきありがとうございます。私のコードで。 :D:D –

0

私が最後にC++を書いてから長い時間があったが、ここにいます:

私はなぜあなたはint型のポインタであることを値を宣言しているかわかりません。それをintにすることを意味しましたか?

class test 
{ 
    private: 

     int value; 

    public: 

     test(int x) 
     { 
      value = new int(x); 
     } 

     int getValue() 
     { 
      return value; 
     } 

     test(const test & a) 
     { 
      value = a.getValue(); 
     } 
}; 
+0

それから新しいものを取り出してください。 –

+0

私は自分のコードが学習目的のために何もしないことを知っています。その行 "int = new int(x)"はコンパイルされません。ありがとうございました。 –

0

(OPの代わりに掲示)

私はgetvalue()関数をconstにしようとしました。問題は、私がconst参照としてテストクラスを渡したことと、getvalue()関数constを宣言しなかったためです。コンパイラは関数がその参照内の何かを変更しようとしていると考えました。

関連する問題