【发布时间】:2017-11-01 16:44:06
【问题描述】:
我的代码有一个class compROS。我创建了两个函数requestStart 和requestNotStart,它们试图从compROS 类中调用is_started_ 和sec_。现在每当我运行代码时,都会出现以下错误:
函数
requestStart和requestNotStart和is_started_和sec_未在此范围内声明。
我的假设是不能从类外部访问私有函数。我应该将requestStart 和requestNotStart 添加为好友函数吗?
解决这些错误最有效的方法是什么?
以下是我的代码 -
(根据@Snps 和@Philip Brack 的cmets 更新了我的代码)
using namespace std;
namespace Lib
{
class compROS
{
public:
compROS(string error_text, int sec):
error_text_(error_text),
is_started_(false),
sec_(sec)
{
}
private:
string error_text_;
bool is_started_;
int sec_;
};
}
int requestStart(Lib::compROS& c)
{
if(!c.is_started_)
sec_ = 2;
// Start timer
// Timer expired
c.is_started_ = true;
return 0;
}
int requestNotStart(Lib::compROS& c)
{
// <Code to be inserted>
return 0;
}
int main (int argc, char **argv)
{
Lib::compROS c("error", 2);
requestStart(c);
requestNotStart(c);
return 0;
}
【问题讨论】:
-
requestStart()不是你班级的成员,这意味着sec_和is_started_没有在requestStart()中定义,你不能使用它们。 -
看来你需要一个关于 c++ 的一般性修订......那代码没有意义。
-
1.
is_started_和sec_不是函数。您也没有试图将它们视为函数。如果你称它们为函数,那就令人困惑了。 2.当您遇到编译错误时,请复制编译错误的文本,不要重新键入您认为重要的部分。 -
需要一个您的预期用途示例。类成员函数和无友函数可能是同样可行的选择。