2017-07-26 85 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; 
    }