内联构造函数的未解析的外部

时间:2015-10-06 21:22:30

标签: c++

我有一个简单的二维向量类,它实现为内联函数/运算符。

但是,当我想要实例化没有参数的Vector时,我得到Unresolved externals错误,我不知道为什么。但是,当我使用带参数的其他构造函数时,它没问题。

这是我的班级:

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)" (?a@@YA?AVVector2@Maths@GreenEye@@XZ) referenced in function main
1>X:\Development\Projects\Engine\x64\Debug\Test.exe : fatal error LNK1120: 1 unresolved external

有什么想法吗?感谢。

1 个答案:

答案 0 :(得分:5)

这是因为您没有使用以下内容实例化对象:

Vector2 a();

这实际上是一个函数声明,这就是它在链接时抱怨缺少函数的原因。

要使用默认构造函数创建对象,它应该是:

 Vector2 a;