2013-01-21 76 views
-1

在我正在开发的项目中,我有一个名为“Camera”的外部类,在这个类的内部,我正在实例化一个名为“帧”。 Frame类有这个在它的私有部分:在另一个类中调用一个类的特定构造函数

private: 

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

所以我得到一个错误,当我尝试实例化一个框架对象,因为默认的构造函数是私有的。在框架的公共部分,然而,有这样的:

public: 

Frame(char *pBuffer, int bufferSize); 

所以这是我需要从相机中实例化帧时调用构造函数。问题是我似乎无法弄清楚如何做到这一点。我不得不用相机类(其中默认的构造函数是private部分)同样的问题,但我不得不这样做,以解决这个问题是:

Camera::Camera():mCamera(whatever params here){ 
    //constructor stuff here 
} 
在实现文件

。但是,当我尝试在Camera类中为Frame执行相同的操作时,出现大量错误。

那么我该如何从另一个对象的类中调用一个对象的特定构造函数呢?

+2

您需要使用成员初始值设定项列表。 –

+0

请显示[sscce](http://sscce.org/)。 – chris

+0

[构造函数中这个奇怪的冒号成员语法是什么意思?]可能重复(http://stackoverflow.com/questions/1711990/what-is-this-weird-colon-member-syntax-in-the-constructor ) –

回答

1

猜测您尝试使用:constructor initialization listCamera::Camera():mCamera():mFrame(NULL, 0)每一个成员。您需要将初始化与,分开,就像这样:

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

这也可能是阅读good C++ textbook一个好主意。

+0

这解决了这个问题。我试图在单独的代码块中做所有的事情,我不知道它可以被追加到相机类的构造函数的末尾。谢谢! – xcdemon05

相关问题