我在說的是This。現在,我的問題是我有一個接口頭文件,我真的不喜歡做任何實現。可以從該頭中聲明的基類派生的類採用這種習慣用法嗎?因爲據我所知,我必須爲基類定義(受保護的)複製構造函數,這意味着我必須執行字符串(char *)副本。而且我不想將任何標頭包含在我的接口標頭文件中,因爲this。有任何想法嗎?虛擬構造函數問題
編輯:
class PluginFunction
{
public:
explicit PluginFunction(){}
virtual ~PluginFunction(){}
virtual int GetFunctionID() const = 0;
virtual const char* GetFunctionName() const = 0;
virtual bool EvalFunction(int&, RNode*, int){return true;}
virtual bool EvalFunction(double&, RNode*, int){return true;}
virtual bool EvalFunction(char*&, RNode*, int){return true;}
virtual PluginFunction* Clone();
protected:
explicit PluginFunction(const PluginFunction&)
{
//I dont want to strcpy :(which will have to include some header.
//Or I'll just iterate the buffer myself :).
}
private:
PluginFunction& operator=(const PluginFunction&);
int i_ID;
char* z_Name;
};
請張貼一些示例代碼,但不清楚你的問題是什麼。 – 2010-10-15 12:22:24
您的第一個問題請參閱工廠方法http://sourcemaking.com/design_patterns/factory_method。對於你的第二個問題,可以試用PIMPL的習慣用法。 http://www.gotw.ca/gotw/024.htm – DumbCoder 2010-10-15 12:53:24