您好我想创建一个新的类变量,它是一个指针并通过复制构造函数初始化它。虽然我知道复制构造函数如何通过引用工作,但我无法弄清楚如何做到这一点。你能帮助我吗? 例如,我有这个定义:
class A{
public:
int a;
private:
};
在另一个代码段中,我执行以下操作:
A *object= new A;
A->a=10;
A *newobject= new A(*object);
但是我遇到了分段错误。你能帮助我吗? 我也尝试过:
A *newobject= new A(&(*object));
但它也不起作用。
答案 0 :(得分:2)
您的示例中的这些行甚至不应该编译:
A *object= new A;
A.a=10;
你的意思是
Foo *object = new Foo;
object->a = 10;
右?
已编辑添加:
当您通过@Alok Save尝试the code posted时会发生什么?
答案 1 :(得分:1)
使用这种简单的示例,使用默认的位智能复制构造函数的以下工作正常。
简单类看起来像
class Bclass {
public:
int iValue;
};
使用复制构造函数的代码如下所示:
Bclass *pObject = new Bclass;
pObject->iValue = 10;
Bclass *pObject2 = new Bclass (*pObject);
使用Microsoft Visual Studio 2005,以上工作正常。
答案 2 :(得分:0)
由于类名是Foo而不是A,因此应该创建一个Foo对象。
class Foo{
public:
int a;
private:
};
Foo *object= new Foo;
object->a=10;
现在因为object是指向类Foo的指针,所以 - >应该使用运算符。