2017-07-26 83 views
0

我有三个.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; 
} 

它让我使对象无投诉,然而,在运行时我的程序给出了这样的错误:

错误C2065“对象”:未声明的标识符

我不认为这是一个很难回答的问题,但我有麻烦试图通过搜索栏来解释我的问题。如果你能帮助我,我会很感激。

+6

显示编译器与它给你关于它的确切消息一起抱怨的代码。 – NathanOliver

+0

'对象'确实没有声明。你所拥有的就是'物体'。 – Arkadiy

+1

您已经将两个类声明为“Class”,大写字母为C. C++区分大小写,因此这与“1.h”中的“class”不同。您可能还注意到,在上面的示例中它的着色方式不同。 – bjhend

回答

1

OnPressed()Three成员,但Three不从Two派生,所以Three没有任何object部件,其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; 
    }