2013-05-07 66 views
3

我開始學習C++,但無法解決此錯誤。 我想實現一個名爲IModeloDinamico的類,它具有作爲私有成員在fparser.h庫中實現的稱爲FunctionParser的另一個類的一些對象。 我想實現一些getters,但我有一些錯誤返回其他類的對象。這是代碼。返回其他類的對象的C++類getter錯誤

#//Some includes 
#include "fparser.h" 

class IModeloDinamico 
{ 
private: 
    //Some string and double variables. 

    //FunctionParser variables are objects from fparser library. 

    FunctionParser fp1; 

    //... 

    FunctionParser fp16; 

public: 

    // Constructor 
    IModeloDinamico(); 

    //Destructor 
    ~IModeloDinamico(); 

    //Accesors 

    //Getters 

    //Some getters for string and double vars. 
    //And getters for return objects of fparser library. **Where i have the errors.** 

    FunctionParser GetFunctionParser1() const 
    { 
     return fp1; 
    }; 

FunctionParser GetFunctionParser2() const 
    { 
     return fp2; 
    }; 

// ... 

FunctionParser GetFunctionParser16() const 
    { 
     return fp16; 
    }; 

    //Setters/ 

    // ... 

    //Some methods.. 
}; 

錯誤消息說:

‘FunctionParser::FunctionParser(const FunctionParser&)’ is private.

這種方法在fparser庫中實現,並聲明爲類的私有成員,但我不調用該方法返回的對象。

其他錯誤是:

'within this context'

在FunctionParser的每個獲取。

+0

返回也許你應該參考 – spiritwolfform 2013-05-07 09:48:50

+0

歸還你的職位是非常不可讀。照顧你提問的方式,因爲它會影響答案的質量。這次我爲你編輯了這個問題,下次請自己動手。 – Spook 2013-05-07 09:53:31

+0

謝謝Spook。這是我的第一條消息,我迷路了!下次我會以正確的方式做到這一點。謝謝。 – user2357667 2013-05-07 10:02:09

回答

1

嘗試

const FunctionParser& GetFunctionParser1() const { return fp1; } 

你沒有手動調用FunctionParser::FunctionParser(const FunctionParser&),但是當你通過返回它,它需要調用構造將從您的getter返回副本對象。
你也可能要添加一個非const getter方法常量,正確性

FunctionParser& GetFunctionParser1() { return fp1; } 
+0

它的工作原理!但是: – user2357667 2013-05-07 09:53:52

+0

const FunctionParser&GetFunctionParser1(){return fp1;}; – user2357667 2013-05-07 09:54:08

+0

問題是什麼?你能用幾句話給我解釋一下嗎?我不希望你放鬆你的時間。感謝您的幫助!!!! – user2357667 2013-05-07 09:56:06

2

私有方法是拷貝構造函數和你撥打的方法,因爲你的方法返回一個複製解析器目的。

FunctionParser GetFunctionParser16() const 
{ 
    return fp16; // return copy of fp16 
} 

複製構造函數是私有的事實表明此類的編寫者不希望這些對象被複制。所以,你應該通過參考

const FunctionParser& GetFunctionParser16() const 
{ 
    return fp16; // return reference to fp16 
} 
+0

Thankyou !!!!!我明白了!!再次感謝你們兩個人! – user2357667 2013-05-07 09:58:53