2015-10-06 24 views
-3

我有一個簡單的2維矢量類,它是作爲內聯函數/運算符實現的。內聯構造函數未解析的外部件

但是,當我想實例化我的矢量沒有參數我得到未解決的外部錯誤,我不知道爲什麼。但是,當我用參數使用其他構造函數的時候沒問題。

這是我的課:

class Vector2 
{ 
public: 
    float x; 
    float y; 

public: 
    //Constructors 
    Vector2() : x(0.0f), y(0.0f) {} 
    Vector2(const float _x, const float _y) : x(_x), y(_y) { } 
}; 

創建實例,它會導致錯誤:

Vector2 a(); 

但與其他構造函數實例化時,它的確定。這也適用於:

Vector2 a = Vector2(); 

我得到這個:

1>main.obj : error LNK2019: unresolved external symbol "class GreenEye::Maths::Vector2 __cdecl a(void)" ([email protected]@[email protected]@[email protected]@XZ) referenced in function main 
1>X:\Development\Projects\Engine\x64\Debug\Test.exe : fatal error LNK1120: 1 unresolved external 

任何想法?謝謝。

+0

缺少分號';'類聲明的最後括號後。除此之外,我無法重現您的問題。 –

+0

編輯,忘記在代碼中添加它,無論如何這不是一個問題 – mezo

+5

請準確的錯誤信息,或它沒有發生。 –

回答

5

這是因爲您沒有使用實例化對象如下:

Vector2 a(); 

這實際上是一個函數聲明這就是爲什麼它在抱怨在鏈接時丟失的功能。

爲了創建使用默認構造的對象應該是:

Vector2 a; 
+1

這個問題很普遍,有一個名字:最令人頭痛的解析。 –

相關問題