【问题标题】:Calling a specific constructor of a class from within another class从另一个类中调用一个类的特定构造函数
【发布时间】:2013-01-21 16:02:23
【问题描述】:

在我正在处理的项目中,我有一个名为“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 执行相同的操作时,会遇到大量错误。

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

【问题讨论】:

  • 你需要使用成员初始化器列表。
  • 请出示sscce
  • @AlokSave,关于最后一个代码示例(以及之后的文本)的某些内容表明它还有更多内容。
  • 当我尝试对 Camera 类中的 Frame 做同样的事情时是什么意思?请显示示例代码。
  • 您的问题不清楚:简单的答案是您的做法与为mCamera 所做的完全相同。但既然你在问,很明显Frame 有一些棘手的问题。那么棘手的部分是什么?问题中似乎缺少它

标签: c++ object constructor


【解决方案1】:

猜测您尝试为constructor initialization list Camera::Camera():mCamera():mFrame(NULL, 0) 中的每个成员使用:。您需要用, 分隔初始化程序,如下所示:

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

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

【讨论】:

  • 这解决了问题。我试图在单独的代码块中做所有事情,我不知道它可以附加到相机类的构造函数的末尾。谢谢!
猜你喜欢
  • 1970-01-01
  • 2012-06-22
  • 2014-03-12
  • 1970-01-01
  • 2020-11-07
  • 2014-08-01
  • 1970-01-01
  • 2018-09-28
  • 2020-03-14
相关资源
最近更新 更多