我需要有人告诉我这段代码有什么问题。我不知道它有什么问题。我知道代码没有做任何有意义的事情,也无法使用。我创建它只是为了知道复制构造函数是如何工作的。
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();
};
};
答案 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.