2013-01-21 77 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

相關問題