C++ 虚拟构造问题
我是说。现在,我的问题是我有一个接口头文件,我真的不喜欢在其中执行任何实现。从该标头中声明的基类派生的类是否可以采用这种习惯用法?因为据我所知,我必须为基类定义(受保护的)复制构造函数,这意味着我必须进行字符串(char*)复制。我不想在我的接口头文件中包含任何头,因为。有什么想法吗 编辑:C++ 虚拟构造问题,c++,C++,我是说。现在,我的问题是我有一个接口头文件,我真的不喜欢在其中执行任何实现。从该标头中声明的基类派生的类是否可以采用这种习惯用法?因为据我所知,我必须为基类定义(受保护的)复制构造函数,这意味着我必须进行字符串(char*)复制。我不想在我的接口头文件中包含任何头,因为。有什么想法吗 编辑: 是的,从该头中的基类派生的类可以使用该习惯用法。我不确定您在哪里看到了问题。是的,从该标题中的基类派生的类可以使用该习惯用法。我不确定您在哪里看到问题。为什么不能将构造函数代码放在它自己的.cpp文件中?如
是的,从该头中的基类派生的类可以使用该习惯用法。我不确定您在哪里看到了问题。是的,从该标题中的基类派生的类可以使用该习惯用法。我不确定您在哪里看到问题。为什么不能将构造函数代码放在它自己的.cpp文件中?如果需要,您只需在其中包含相关的str操纵头 我也不知道为什么不用std::string而不用原始字符指针。如果确实需要,可以使用.c_str()函数返回原始指针
需要将包括函数体在内的所有内容都放在头文件中的唯一原因是,您是否希望它们内联或类是否已模板化。为什么不能将构造函数代码放在它自己的.cpp文件中?如果需要,您只需在其中包含相关的str操纵头 我也不知道为什么不用std::string而不用原始字符指针。如果确实需要,可以使用.c_str()函数返回原始指针
您需要将所有内容(包括函数体)都放在头文件中的唯一原因是,您是否希望它们内联或类是否已模板化。请发布一些示例代码,您的问题不清楚。有关第一个问题,请参阅factory方法。对于第二个问题,可以尝试PIMPL习惯用法。请发布一些示例代码,不清楚您的问题是什么。关于您的第一个问题,请参阅工厂方法。对于第二个问题,可以尝试PIMPL习惯用法。
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;
};