gpt4 book ai didi

c++ - 为什么我不能使用 getter 访问公共(public)变量?

转载 作者:太空宇宙 更新时间:2023-11-04 14:58:49 24 4
gpt4 key购买 nike

有一个包含这些语句的文件:

public:
boost::shared_ptr<TBFControl::TbfCmdHandler> _tbfCmdHandlerPtr;
// will be private later...

boost::shared_ptr<TBFControl::TbfCmdHandler> getTBFCmdHandler()
{ return _tbfCmdHandlerPtr; }

我可以这样使用它:

boost::shared_ptr<TBFControl::TbfCmdHandler>myTbfCmdHandlerPtr(
this->getTBFInstallation()-> _tbfCmdHandlerPtr );

但不是像我想要的那样:

boost::shared_ptr<TBFControl::TbfCmdHandler>myTbfCmdHandlerPtr(
this->getTBFInstallation()->getTBFCmdHandler() );

使用getter函数,出现如下错误:

'Housekeeping::TBFInstallation::getTBFCmdHandler' : cannot convert 'this' pointer from 'const Housekeeping::TBFInstallation' to 'Housekeeping::TBFInstallation &'

这里出了什么问题?

最佳答案

显然,this->getTBFInstallation() 返回一个常量指针。您还需要将函数 getTBFCmdHandler 设置为常量。

boost::shared_ptr<TBFControl::TbfCmdHandler> getTBFCmdHandler() const
{
return _tbfCmdHandlerPtr;
}

注意第一行末尾的 const 关键字。

编辑:通过添加const,您实际上是在从TBFInstallation * 更改this 的类型到 TBFInstallation const *。基本上,通过添加 const,您是说即使调用该函数的对象是 const 也可以调用该函数。

关于c++ - 为什么我不能使用 getter 访问公共(public)变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2055486/

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