2014-01-21 45 views
0

主類:重新定義的類C++頭文件

#include "otherClass.h" 
using namespace std; 

int main() 
{ 
a cl; 
return 0; 
} 

頭文件:

#ifndef OTHERCLASS_H_INCLUDED_ 
#define OTHERCLASS_H_INCLUDED_ 
class a{ 
int add(int a, int b); 
int subtract(int a, int b); 
}; 
#endif 


The .cpp class that the header files corresponds to 


#include "otherClass.h" 
class a { 
int add(int a, int b) { 
return (a + b); 
} 

int subtract(int a, int b) { 
return (a - b); 
} 
}; 

錯誤:

Text.cpp:13: error: ‘cl’ was not declared in this scope otherClass.cpp:3: error: redefinition of ‘class a’ otherClass.h:3: error: previous definition of ‘class a’

我有兩個問題:首先,我之前在我的頭文件中添加了一個類,文件工作正常(只是保存函數)。一旦我添加了課程,我得到了上述兩個錯誤。有人可以告訴我如何安排我的頭文件來解決這些錯誤?即我想知道如何能夠爲包含類的文件創建頭文件。

其次,我該如何得到它,以便在主函數的範圍內聲明類?

+1

那你只需要在編譯單元中對你的類進行無效的重新聲明,而不是僅僅提供一個實現'A級'! –

回答

2

這是你將如何在.cpp文件中定義類的成員函數:

#include "otherClass.h" 

int a::add(int a, int b) { 
    return (a + b); 
} 

int a::subtract(int a, int b) { 
    return (a - b); 
} 

注意,您必須聲明的成員private,所以你將不能夠做很多他們。

+0

我仍然收到同樣的錯誤:重新定義類/以前定義的類 – user1930111

+0

@ user1930111類定義沒問題(假設您希望成員是私有的)。但是包括衛兵不應該有領先的下劃線。雙引導下劃線保留用於實現。 – juanchopanza

+0

即使沒有那些雙下劃線(我剛剛編輯它),我仍然得到相同的錯誤 – user1930111

2

刪除

class a { 

,並最終

}; 

從.cpp文件

(並添加::到方法,按照前文的答案)