我有一个带有bool和getter / setter的简单类:
tile.h
class Tile {
public:
Tile();
virtual ~Tile();
bool isActive() const { return isActive_; };
void setActive(bool status) { isActive_ = status; };
private:
bool isActive_;
};
tile.cpp
#include "tile.h"
Tile::Tile() : isActive_(false) {
}
Tile::~Tile() {
}
现在,当我在main函数中创建一个类对象并使用isActive()函数访问isActive_ bool时,它会正确打印它。
但是当我在创建磁贴后使用setActive函数然后打印出上面的状态时,它不会更改isActive_变量并始终保持在Tile构造函数中指定的值。
示例main.cpp
#include "tile.h"
#include <string>
#include <iostream>
int main() {
Tile tile;
// will print the correct thing, based on what I set in the constructor
if (tile.isActive()) {
std::cout << "is active" << std::endl;
} else {
std::cout << "is NOT active" << std::endl;
}
tile.setActive(true);
// will NOT print the correct thing. it will print what I set in its constructor
if (tile.isActive()) {
std::cout << "is active" << std::endl;
} else {
std::cout << "is NOT active" << std::endl;
}
return 0;
}
我想我会疯了,我不能为我的生活弄清楚我做错了什么???
另外,虽然我在这里,但是调用(tile.isActive())和(tile.isActive()== true)之间是否有区别,因为在过去,当前者不起作用时,后者做了,我不明白为什么。顺便说一句,在这个例子中,上述两个都没有工作:(
编辑:
你是对的,确实有效。非常感谢您的回复!
我只是愚蠢。谢谢&lt; 3
答案 0 :(得分:1)
调用(tile.isActive())和(tile.sActive()== true)
之间有区别吗?
对于这种情况 - 不,根本没有区别。
因为在过去,当前者不起作用时,后者做了,我不知道为什么
因为if( something )
是true
,当且仅当此something
被评估为true
时(意思是 - 与0
不同)。所以,这在很大程度上取决于具体情况。
关于这个问题 - 尝试重建你的项目。一切都很好。
答案 1 :(得分:1)
一切看起来都不错。我唯一看到的是在main.cpp中你包含“tile”而不是“tile.h”。也许您有一个旧版本的tile.h,其中有“tile”名称?