Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
非访问方法未定义C++类属性_C++_Oop_Encapsulation_Accessor - Fatal编程技术网

非访问方法未定义C++类属性

非访问方法未定义C++类属性,c++,oop,encapsulation,accessor,C++,Oop,Encapsulation,Accessor,我不明白为什么以下大大简化的代码返回错误:“m_sID”未在此范围内调用: 既然comparePerson是类Person的成员函数,它难道不能访问私有变量m_sID吗 或另一种提问方式:我知道在Ruby中,你可以通过调用Self.GETID或类似的东西来获得这样的工作,但是什么是C++中的一个工作等价的编译和执行的正确的。 CuffRealSID是人的一个成员,所以这个定义需要在人的范围内: 否则,它只是一个非成员函数的声明和定义,显然不能直接访问任何类的成员 还要注意,getID和comp

我不明白为什么以下大大简化的代码返回错误:“m_sID”未在此范围内调用:

既然comparePerson是类Person的成员函数,它难道不能访问私有变量m_sID吗

或另一种提问方式:我知道在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){}