C++ 隐式删除的复制构造函数编译错误返回指针值

C++ 隐式删除的复制构造函数编译错误返回指针值,c++,C++,很抱歉,如果这个问题已经得到回答,但我找不到任何可能的解决办法 以这门课为例 class NPALog{ public: NPALog(); ~NPALog(); void error(char* message); void warning(char* message); void log(char* message); void setOutput(char* fileName); std::ofstream getLog

很抱歉,如果这个问题已经得到回答,但我找不到任何可能的解决办法

以这门课为例

     class NPALog{
public:
    NPALog();
    ~NPALog();

    void error(char* message);
    void warning(char* message);
    void log(char* message);

    void setOutput(char* fileName);
    std::ofstream getLogBuffer(){return *m_logOutputFile;};
    std::ofstream getErrorBuffer(){return *m_errorOutputFile;};


private:
    char* m_fileName;
    std::ofstream *m_logOutputFile;
    std::ofstream *m_errorOutputFile;

 };
当我试图编译它时,getLogBuffer函数中出现以下错误:

call to implicitly-deleted copy constructor of 'std::ofstream' (aka 'basic_ofstream<char>')
调用“std::ofstream”(也称为“basic_of stream”)的隐式删除副本构造函数 我对复制构造函数了解不多,但我想做的唯一一件事是使用指针,这些指针允许我以后轻松定义每个流,并在用户想要使用缓冲区时返回缓冲区本身

你知道这里有什么问题吗?你知道如何做得更好吗


非常感谢。

您正在通过值从
getLogBuffer()
getErrorBuffer()
返回
std::ofstream
,这将调用已删除的复制ctor(如错误消息所示)。您应该返回一个引用。

您不能复制流对象的
。也许你应该返回一个引用。通过引用而不是值返回流。谢谢你的回答。这就是我的想法,但我不想返回对对象的引用以避免用户能够修改它。谢谢你的回答。这样做可以解决问题,但我不希望用户能够修改类的成员,允许通过引用传递它。也许我会尽量避免使用指针。谢谢