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

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

クラス名は A ではなく Foo なので、Foo オブジェクトを作成する必要があります。

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

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

object はクラス Foo へのポインターであるため、-> 演算子を使用する必要があります。

于 2013-05-18T14:20:53.477 に答える