非访问方法未定义C++类属性
我不明白为什么以下大大简化的代码返回错误:“m_sID”未在此范围内调用: 既然comparePerson是类Person的成员函数,它难道不能访问私有变量m_sID吗非访问方法未定义C++类属性,c++,oop,encapsulation,accessor,C++,Oop,Encapsulation,Accessor,我不明白为什么以下大大简化的代码返回错误:“m_sID”未在此范围内调用: 既然comparePerson是类Person的成员函数,它难道不能访问私有变量m_sID吗 或另一种提问方式:我知道在Ruby中,你可以通过调用Self.GETID或类似的东西来获得这样的工作,但是什么是C++中的一个工作等价的编译和执行的正确的。 CuffRealSID是人的一个成员,所以这个定义需要在人的范围内: 否则,它只是一个非成员函数的声明和定义,显然不能直接访问任何类的成员 还要注意,getID和comp
或另一种提问方式:我知道在Ruby中,你可以通过调用Self.GETID或类似的东西来获得这样的工作,但是什么是C++中的一个工作等价的编译和执行的正确的。
CuffRealSID是人的一个成员,所以这个定义需要在人的范围内:
否则,它只是一个非成员函数的声明和定义,显然不能直接访问任何类的成员 还要注意,getID和comparePersonID实际上应该是const成员函数。在cpp中:void Person::comparePersonID() {
if (m_sID == "12345")
std::cout << "success!" << std::endl;
}
啊,好吧,这很有道理。来自更高级的语言,我希望Person头中的函数声明足以让编译器推断出作用域,但是如果在两个单独的类中的每个类中都有两个同名的方法,那么这显然会导致问题。
void Person::comparePersonID() { ....
^^^^^^^^
void Person::comparePersonID() {
if (m_sID == "12345")
std::cout << "success!" << std::endl;
}
Person::Person(const std::string& sID) :m_sID(sID){}