C++类中返回其他类对象的getter出现错误

3

我开始学习C++,但是我无法解决这些错误。我尝试实现一个名为IModeloDinamico的类,该类的私有成员包括另一个名为FunctionParser的类的一些对象,该类是在fparser.h库中实现的。我正在尝试实现一些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&)”是私有的。

此方法是在fparser库中实现并声明为该类的私有成员,但我没有调用该方法来返回那些对象。

其他错误如下:

'在此上下文中'

在FunctionParser的每个getter中出现。


也许你应该通过引用返回它们。 - spiritwolfform
你的帖子非常难以阅读。请注意提问方式,因为它会影响到回答的质量。这一次我替你编辑了问题,下一次请自行处理。 - Spook
谢谢Spook。这是我的第一条消息,我迷失了!!!下次我会用正确的方式做的。!!! 谢谢。 - user2357667
2个回答

2

私有方法是复制构造函数,你正在调用该方法,因为你的方法返回解析器对象的副本

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

复制构造函数是私有的这一事实表明,该类的编写者不希望这些对象被复制。因此,您应该通过引用返回。

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

0

尝试

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

你不需要手动调用 FunctionParser::FunctionParser(const FunctionParser&),但是当你通过返回它时,它需要被调用来构造一个副本对象,该对象将从你的getter中返回。
你可能还想为const-correctness添加一个非const getter。

FunctionParser& GetFunctionParser1() { return fp1; }

const FunctionParser& GetFunctionParser1() { return fp1; }; - user2357667
问题出在哪里?你能简单地向我解释一下吗?我不想浪费你的时间。谢谢你的帮助!!! - user2357667

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接