0

您好,我想创建一个新的类变量,它是一个指针,并通过复制构造函数对其进行初始化。虽然我知道复制构造函数是如何通过引用工作的,但我不知道该怎么做。你能帮助我吗?例如我有这个定义:

class A{
public:
 int a;
private:
};

在另一个代码段中,我执行以下操作:

A *object= new A;
A->a=10;

A *newobject= new A(*object);

但我得到一个分段错误。你能帮助我吗?我也试过:

 A *newobject= new A(&(*object));

但它也不起作用。

4

3 回答 3

2

您的示例中的这些行甚至不应该编译:

A *object= new A;
A.a=10;

你的意思是

Foo *object = new Foo;
object->a = 10;

对?

编辑添加:

当您尝试@Alok Save发布的代码时会发生什么?

于 2013-05-18T13:54:34.637 回答
1

通过这种简单的示例,以下使用默认的按位复制构造函数可以正常工作。

简单的类看起来像

class Bclass {
public:
    int iValue;
};

使用复制构造函数的代码如下所示:

Bclass *pObject = new Bclass;
pObject->iValue = 10;

Bclass *pObject2 = new Bclass (*pObject);

使用 Microsoft Visual Studio 2005,上述工作正常。

另请参阅实现复制构造函数

另请参阅复制构造函数以获取指向对象的指针

于 2013-05-18T14:05:55.567 回答
0

由于类名是 Foo 而不是 A,所以应该创建一个 Foo 对象。

class Foo{
  public:
  int a;
  private:
}; 

 Foo *object= new Foo;
 object->a=10;

现在由于 object 是指向类 Foo 的指针,所以应该使用 -> 运算符。

于 2013-05-18T14:20:53.477 回答