C++ 虚拟构造问题

C++ 虚拟构造问题,c++,C++,我是说。现在,我的问题是我有一个接口头文件,我真的不喜欢在其中执行任何实现。从该标头中声明的基类派生的类是否可以采用这种习惯用法?因为据我所知,我必须为基类定义(受保护的)复制构造函数,这意味着我必须进行字符串(char*)复制。我不想在我的接口头文件中包含任何头,因为。有什么想法吗 编辑: 是的,从该头中的基类派生的类可以使用该习惯用法。我不确定您在哪里看到了问题。是的,从该标题中的基类派生的类可以使用该习惯用法。我不确定您在哪里看到问题。为什么不能将构造函数代码放在它自己的.cpp文件中?如

我是说。现在,我的问题是我有一个接口头文件,我真的不喜欢在其中执行任何实现。从该标头中声明的基类派生的类是否可以采用这种习惯用法?因为据我所知,我必须为基类定义(受保护的)复制构造函数,这意味着我必须进行字符串(char*)复制。我不想在我的接口头文件中包含任何头,因为。有什么想法吗

编辑:


是的,从该头中的基类派生的类可以使用该习惯用法。我不确定您在哪里看到了问题。

是的,从该标题中的基类派生的类可以使用该习惯用法。我不确定您在哪里看到问题。

为什么不能将构造函数代码放在它自己的.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;
};