c++ - 访问类对象

标签 c++

我有三个 .h 和三个 .cpp 文件。

我在 2.h 中的类中的第一个 .h(比如 1.h)中创建了一个类的对象。我想在我的 3.cpp 中使用该类对象。

1.h

class One
{ 
   bool pressed;
   ...
}

2.h

#include "1.h"
Class Two
{
public:
    One object;
    ...
}

3.h

#include "2.h"
Class Three
{ ...
}

3.cpp

#include "3.h"

void Three::OnPressed()
{
   object.pressed = true;
}

它允许我毫无怨言地制作对象,但是,我的程序在运行时给出了这个错误:

error C2065 'object': 未声明的标识符

我认为这不是一个难题,但我在尝试通过搜索栏解释我的问题时遇到了麻烦。如果你能帮助我,我将不胜感激。

最佳答案

OnPressed()Three 的成员,但是 Three不源自 Two , 所以 Three没有任何 object成员(member)那OnPressed()可以访问。这就是编译器所提示的。

您需要:

  1. 制作Three派生自 Two

    class Three : public Two
    
  2. Three作为 One 实例的成员(就像你对 Two 所做的一样):

    class Three
    {
    public:
        One object;
        void OnPressed();
        ...
    };
    
    void Three::OnPressed()
    {
        object.pressed = true;
    }
    

    或者给它一个 Two 的实例:

    class Three
    {
    public:
        Two object2;
        void OnPressed();
        ...
    };
    
    void Three::OnPressed()
    {
        object2.object.pressed = true;
    }
    

关于c++ - 访问类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45336417/

相关文章:

c++ - OpenGL:创建复杂且平滑的多边形

c++ - 在派生类中初始化具有依赖类型名称的基子对象

c++ - Qt QDialog 每次关闭并再次显示时都会稍微移动位置

c++ - CMake动态链接 `.a`中的 `/usr/local/lib`文件

html - Visual Studio工具箱项不可用

c++ - std::memcpy与std::copy_n用于旧版C结构

c++ - 将 3 个字节/引脚值合并为一个字节

c++ - 如何将 argv[1] 传递给带有 0 个参数的函数?

c++ - 模板 C++ 中的范围问题

c++ - 软件设计从一个模块变为多个模块