【发布时间】:2014-09-09 14:04:39
【问题描述】:
头文件代码如下:
#ifndef __MANAGER_H__PROJECT_A__
#define __MANAGER_H__PROJECT_A__
#include <string>
class Manager {
private:
std::string type;
bool isStarted;
protected:
void setType(std::string type);
public:
Manager();
virtual ~Manager();
//Get type identifier
std::string getType();
//Startup manager. 0: Startup ok. Any #: Not ok.
virtual int startUp();
//Shutdown manager.
virtual void shutDown();
//True: startUp executed ok. False, otherwise.
bool isStarted() const;
};
#endif
下面的代码将错误显示为“指向绑定函数的指针只能用于调用函数”。
bool Manager::isStarted() const {
return this->isStarted; //<---- ERROR.
}
应该改成这个。
bool Manager::isStarted() const {
return Manager::isStarted; //<---- Correct.
}
那么为什么这是可以接受的呢?
void Manager::setType(std::string type){
this->type = type; //<---- Correct.
}
提前致谢。
【问题讨论】:
-
是允许的。错误无关:您使用了错误的变量名。
-
或者,更具体地说,您已将
isStarted别名为类中方法的名称,因此this->isStarted试图返回指向成员方法Manager::isStarted的指针而不是一些布尔值isStarted。所以你的代码不起作用,因为它没有做你认为它正在做的事情,你的代码起作用是因为它没有做你认为它正在做的事情,因为返回的指针可以隐式转换为@ 987654329@. -
我很愚蠢。很抱歉浪费了您的时间。
-
投反对票的请停止。我只想继续前进,反思这个错误。相反,我想请你投票结束。感谢您阅读。
标签: c++ pointers visual-c++ this intellisense