2012-04-19 59 views
-1

我有3個類在C++編碼。它們都很簡單,但編譯器給出了很多錯誤。 cpp文件和頭文件中的每個類。可能的問題是什麼? 其中之一是「基類未定義」。簡單的類導致錯誤

class re { 
    int i; 
    int j; 
    string a; 
    re(int,int,int); 
    ~re(); 
} 

class Pre:public re { 
    int k; 
    public: 
    Pre(int,int,int); 
    ~Pre(); 
} 

class MPre:public Pre { 
    int z; 
    public: 
     MPre(int); 
    ~Mpre(int); 
} 
+8

類定義應以分號(「;」)結尾。你在實際的代碼中使用了分號嗎? (你沒有在你的例子中使用它)。 – mfontanini 2012-04-19 18:53:35

+2

你可以發佈錯誤,我的意思是你粘貼的可能是因爲在類定義的末尾沒有終止';'但我很難猜測。 – EdChum 2012-04-19 18:53:46

+0

我已經放了分號,仍然有錯誤。 – 2012-04-19 18:55:14

回答

2

可能出現的錯誤:

  • 重類的構造函數是不公開的。你知道嗎?

  • MPre構造函數獲取一個輸入,因此您必須爲Pre類編寫默認構造函數。

  • 添加頭文件時要小心。例如,Pre類需要re class的頭文件。

  • 而且,除非添加指針變量的類

+1

如果你要使用繼承,你需要一個虛擬析構函數。 – AlexTheo 2012-04-19 18:56:12

+2

如果你有任何分配的資源,你也需要一個析構函數,不僅僅是內存,還有文件等。 – 2012-04-20 03:47:23

0

有關錯誤undefined base class你不需要寫析構函數,我想你還沒有#include d文件中的類re是在其他類所在的文件中聲明。

0

類聲明中缺少分號。也可以將不同的.h .cpp文件中的所有類分開,這樣可以避免在不需要的情況下包含不需要的代碼。同樣在繼承的情況下,確保你的析構函數是虛擬的,否則會產生內存泄漏。

此外,重構的構造函數不公開使其公開。