2015-10-06 85 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

这个问题很普遍,有一个名字:最令人头痛的解析。 –