2013-05-05 66 views
0

我目前正在從事一個c + +項目,因爲我缺少一些語法或方法來允許我的代碼正確編譯。嘗試設置我的環境後,我遇到了重新定義錯誤,當然,我並不想這麼做。我該如何處理C++中的類重定義錯誤?

的錯誤是在編譯

src/foo.cpp:4:7: error: redefinition of ‘class foo’ 
In file included from src/foo.cpp:2:0: 
./headers/foo.h:7:7: error: previous definition of ‘class foo’ 

如下哪裏我不相信,我重新定義了我的空間FOO;我知道這是使用我定義的foo.h頭文件的結果。

這裏是代碼我編譯

// foo.h 
#ifndef FOO_H 
#define FOO_H 

#include <iostream> 

class foo { 
public: 
    foo(); 
    void test(); 
    ~foo(); 
}; 

#endif /* FOO_H */ 

// foo.cpp 
#include <foo.h> 

class foo { 
public: 
    foo(){} 
    void test(){} 
    ~foo(){} 
}; 

foo::foo(){} 

int foo::test(){ 
    std::cout << "Derp!"; 
    return 0; 
} 

foo::~foo(){} 

我應該怎麼設置我的頭或cpp文件多達解決這個問題?

+0

簡單,從Foo.cpp中刪除類Foo。還將更改爲「foo.h」。雖然的確切含義沒有指定,但它是針對foo.h顯然不是的系統頭文件。 – john 2013-05-05 15:46:27

回答

2

你已經在類中正確地創建了你的方法的原型,所以重新定義你的類來實現這些方法是錯誤的。刪除重複的類,所有你需要做的就是在你的Foo.cpp中文件將它們定義爲這樣:

foo::foo()  { .. } 
foo::~foo()  { .. } 
void foo::test() { .. } 
+0

我已經用上面的建議更新了這個問題。在編譯它仍然會拋出重定義錯誤。 – cosban 2013-05-05 15:50:42

+0

@Cosban **從foo.cpp中刪除** class foo!留下方法,**刪除**類聲明。 – john 2013-05-05 15:51:07

+0

啊,誤解了這個建議,這就糾正了錯誤。謝謝! – cosban 2013-05-05 15:54:04