2012-04-23 35 views
1

我有下面的類繼承自一個集合類,其中我有虛擬函數定義,我需要稍後在我的派生類實現下面。我還沒有在.cpp文件中包含我的成員函數的定義,除了派生類的構造函數外。但是,當我構建我的項目時,出現以下錯誤消息:C++構建錯誤 - 在'{'token |之前預期的類名

預期的類名稱在'{'token |

我已經試過了解我所知道的一切,並且需要幫助理解我在代碼中出現了什麼問題,以及如何解決問題。

#ifndef VARIABLEARRAY_H 
#define VARIABLEARRAY_H 

#include "Collection.h" 

using namespace std; 

class VariableArray: public Collection{ 

     int* list[];// dynamic array that is resized on demand 

    public: 
     VariableArray(); 

}; 
#endif 

任何幫助將不勝感激。

+0

你確定'Collection'是一個類而不是模板嗎? – Cosyn 2012-04-24 01:27:13

回答

1

您確定Collection符號已被您的翻譯單位看到嗎?

您可能需要添加:

#include "Collection.h" 

(或任何正確的名稱是)的類定義之前。

+0

這似乎比我的答案更可能。我對C++的瞭解讓我失望了:p – chris 2012-04-23 23:42:39

+0

可以看出。 。 。我最近才刪除了#include「Collection.h」語句,因爲我最初認爲這是一些循環包含的問題。 – Kobojunkie 2012-04-23 23:42:53

0

我想你也可以向前聲明收藏:

class Collection; 

class VariableArray : public Collection { 
.... 
}; 
+3

不在繼承。 – Puppy 2012-04-23 23:46:41

0

你怎麼確定Collection是提供給編譯器?是否class聲明Collection顯示在預處理輸出您的VariableArray.cpp文件,或任何相應的源文件是?

望着預處理輸出可以幫助您確定:

  • 如果命名空間的污染是一個問題(例如#define碰撞Collection
  • 如果Collection聲明是您VariableArray聲明之前真正可用。

如果它不是一個命名空間污染問題,我會檢查你是否在多個頭文件中使用相同的#include警衛。

相關問題