gpt4 book ai didi

c++ - 返回一个 const 引用和非 const 成员函数调用

转载 作者:行者123 更新时间:2023-11-30 05:45:12 24 4
gpt4 key购买 nike

我是一名新手 C++ 程序员,试图在一个宠物项目上磨练我的技能,但我遇到了以下问题。

我有一个名为 System 的类,它包含另一个类 Agent 的单个对象。我希望外部源按以下方式调用 Agent 类对象的方法:

system.agent().exploration(3.0);

其中 exploration(3.0) 将 agent 的内部变量设置为 3.0。为此,我通过引用返回代理对象:

Agent& agent() {return agent;}

虽然这行得通,但仍然可以按如下方式更改代理:

system.agent() = Agent(1.0,2.0);

在我的例子中,这是不受欢迎的行为。为了解决这个问题,我认为我可以将 Agent 作为 const 引用返回:

const Agent& agent() {return agent;}

但是这段代码无法编译,因为方法 exploration(float e) 是非常量(它修改了代理对象的内部变量)。

在不允许有人完全替换代理对象的情况下,通过 System 类使代理对象公共(public)接口(interface)对外界可用的正确方法是什么?

最佳答案

您可以在 System 类中编写一个函数来包装 Agent 函数。

class System
{
private:
Agent agent;
public:
void exploration(float num) { agent.exploration(num); }
//...
};

关于c++ - 返回一个 const 引用和非 const 成员函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29471075/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com