复制构造函数错误

时间:2011-01-28 02:20:53

标签: c++

我需要有人告诉我这段代码有什么问题。我不知道它有什么问题。我知道代码没有做任何有意义的事情,也无法使用。我创建它只是为了知道复制构造函数是如何工作的。

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();
    };
};

4 个答案:

答案 0 :(得分:2)

您需要将getvalue()的声明更改为int getvalue() const,因为您试图在复制构造函数中的const引用上调用getvalue()

答案 1 :(得分: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();
 }


 };

另外,我会避免'测试'作为班级名称;取决于您的平台,如果可能是宏或其他一些in-scpe名称。使用“MyTest”或其他一些。

答案 2 :(得分: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();
        }
};

答案 3 :(得分:0)

(Posted on behalf of the OP).

I tried making the getvalue() function const and it worked. The problem was that I passed the test class as a const reference and because I didn't declare the getvalue() function const the compiler thought the function was going to change something in that reference.