2015-06-09 21 views
0

,我發現了以下錯誤:C++編譯器認爲我的構造函數定義的方法

C:\Users\James\cavewhere\dewalls\src\unit.cpp:6: error: C2511: 'dewalls::Unit::Unit(QString,dewalls::UnitType *)' : overloaded member function not found in 'dewalls::Unit' 
C:\Users\James\cavewhere\dewalls\src\unit.cpp:9: error: C2550: 'dewalls::Unit::{ctor}' : constructor initializer lists are only allowed on constructor definitions 

unit.h:

#ifndef UNIT_H 
#define UNIT_H 

class UnitType; 

#include <QString> 

namespace dewalls { 

class Unit 
{ 
public: 
    Unit(QString name, UnitType *type); 

private: 
    QString _name; 
    UnitType *_type; 
}; 

} 

#endif // UNIT_H 

unit.cpp:

#include "unit.h" 
#include "unittype.h" 

namespace dewalls { 

Unit::Unit(QString name, UnitType *type) : 
    _name(name), 
    _type(type) 
{ 

} 

} 

什麼爲了上帝的愛我做錯了嗎?

+1

它是封閉的,問題是,我忘了移動命名空間中的類'聲明UnitType'。我即將回答我自己的問題 – Andy

+0

如果我可以將代碼縮短爲最簡單的例子,人們會認爲這是一個有效的問題嗎?編譯器錯誤沒有提供信息,任何剛接觸C++的聰明人都很容易被拋出。 – Andy

回答

4

貌似UnitType應該在你的命名空間太

namespace dewalls { 
    class UnitType; 
} 
相關問題