-1

私が取り組んでいるプロジェクトには、「Camera」という名前の外部クラスがあり、このクラス内には、「Frame」という名前のクラスによって定義されたオブジェクトをインスタンス化しようとしています。Frameクラスのプライベートセクションには次のようなものがあります。

private:

// No default ctor
Frame();
// No copy ctor
Frame( Frame& );
// No assignment operator
Frame& operator=( const Frame& );

そのため、デフォルトのコンストラクターはプライベートであるため、フレームオブジェクトをインスタンス化しようとするとエラーが発生します。ただし、フレームの公開セクションには次のようなものがあります。

public:

Frame( char *pBuffer, int bufferSize );

これが、Camera内からFrameをインスタンス化するときに呼び出す必要のあるコンストラクターです。問題は、これを行う方法がわからないように見えることです。Cameraクラス(デフォルトのコンストラクターがプライベートセクションにある)でも同じ問題が発生しましたが、それを修正するために必要なのは次のとおりです。

Camera::Camera():mCamera(whatever params here){
    //constructor stuff here
}

実装ファイル内。ただし、Cameraクラス内のFrameに対してこれと同じことを実行しようとすると、大量のエラーが発生します。

では、別のオブジェクトのクラス内からオブジェクトの特定のコンストラクターを呼び出すにはどうすればよいですか?

4

1 に答える 1

1

コンストラクターの初期化リストで for every member使用しようとしたと思います。次のように、イニシャライザを で区切る必要があります。: Camera::Camera():mCamera():mFrame(NULL, 0),

Camera::Camera() : mCamera() , mFrame(NULL, 0)

また、優れた C++ の教科書を読むこともお勧めします。

于 2013-01-21T16:15:49.780 に答える