c++ - 为什么我不能在 C++ 中访问我的私有(private)变量以及 getter 和 setter 消息

标签 c++

我被一遍又一遍地告知要将我的类变量保密,因为将它们公开将是糟糕的编码习惯,因此从第一天起我就一直在做这件事。当我将所有代码放在一页上时,我从来没有遇到任何问题,但现在当我尝试使用函数访问我的私有(private)变量时出现未定义的错误。

在我的类里面.h

class classs
{
public:
    classs(void);
    void setAge(int x);
    int getAge();
private:
    int age;
};

然后在我的 classs.cpp 中我有:

void setAge(int x)
{
    age = x;
}

int getAge()
{
    return age;
}

这里告诉我年龄是未定义的。当所有这些代码都在一个 .cpp (main.cpp) 中时,我从来没有遇到过任何问题。我的 classs.cpp 上也有#include classs.h

最佳答案

发生这种情况并不是因为您的 setAge 定义在不同的文件中,而是因为它现在位于 class classes {} block 之外。编译器无法知道 setAge 是该类的成员,因此它在范围内没有该类的属性。

通过将您的函数声明为 classs::setAge

来修复它

关于c++ - 为什么我不能在 C++ 中访问我的私有(private)变量以及 getter 和 setter 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7234938/

相关文章:

C++ 保护 : fail to access base's protected member from within derived class

python - SWIG 文件更改后如何重建项目?

c++ - 使用 __declspec 的内存填充问题

c++ - C/C++函数作为参数

c++ - Googletest - DeathTest 无法捕获来自 Qt 应用程序的断言,例如 Q_ASSERT 等。

c++ - 使用 g++ 编译多个 .cpp 和 .h 文件。我做对了吗?

c++ - 这个计算 vector 中值的最小差值的函数的算法复杂度是多少?

c++ - 使用 C++ 流从文本文件中读取数字

c++ - 来自 testdome 的二叉搜索树

c++ - 实现自定义 gtkmm 树模型