2012-08-05 26 views
1

我正在嘗試製作一個名爲「Adresy」的大類常量。一個.h文件不夠。在多個文件中的類繼承C++

my adresy.h looking like: 
#include <Windows.h> 
#ifndef __Adresy_H_ 
#define __Adresy_H_ 

class Adresy { 
    public: 
//first part of constances... 
}; 
#endif 

我想補充extening這個類在第二個文件(例如adresy2.h):

#include "adresy.h" 
class Items: public Adresy { 
    public: 
/// NEXT CONSTANCSES 
}; 

應該如何看第二類以及如何將它們合併成一個文件,包括:(i不想包括例如擴展一個類的5個文件)?

+1

我不知道你的第二堂課應該怎麼看,因爲你沒有說你的任何一堂課是做什麼的。但是,您可以在第一個頭文件的末尾包含第二個頭文件,這樣您類的用戶只能包含一個頭文件。 – jxh 2012-08-05 17:23:14

+1

如果這些類很小並且直接屬於對方,那麼只要在同一個頭文件中聲明它們就沒有什麼問題。 – leftaroundabout 2012-08-05 17:25:25

+0

但這個班級會很大.. – user192012 2012-08-05 17:41:20

回答

0

我理解你的問題,因爲:

  1. 一個頭文件包括:adresy,H
  2. 該文件應包含類Adresy它有這麼多的項目,這是過多,一個文件。

我建議這個解決方案:

adresy.h

#include "ext/adresy_part1.h" 
#include "ext/adresy_part2.h" 
#include "ext/adresy_part3.h" 

class Adresy : public Adresy1, public Adresy2, public Adresy3 { 
}; 

轉/ adresy_part1.h

class Adresy1 { 
public: 
    // first bunch of constants 
}; 

等了儘可能多的零件如你所需。 正如你所看到的 - 我建議也將這些額外的文件分開目錄ext

+0

只需使用Adresy :: xyz即可。公共基類的所有公共條目都可以在派生類中看到,除非派生定義了具有相同名稱的條目。如果你的'Adresy'有空的'{}',那麼,正如我所說的,你可以使用'Adresy :: xyz'。如果您發現這個答案有用,請不要忘記註冊並接受。 – PiotrNycz 2012-08-06 08:27:59

+0

而且,如果碰巧你有兩個同名的成員 - 比如'Adresy1 :: xyz'和'Adresy2 :: xyz' - 那麼你需要使用顯式的基類名:'Adresy1 :: xyz'或'Adresy2 :: xyz'。 'adresy :: xyz'會不明確。我相信你正在迴避這種情況。 – PiotrNycz 2012-08-06 08:56:31