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

mez*_*ezo -3 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) { }
};
Run Code Online (Sandbox Code Playgroud)

创建导致错误的实例:

Vector2 a();
Run Code Online (Sandbox Code Playgroud)

但是当用其他构造函数实例化时,它没问题.这也有效:

Vector2 a = Vector2();
Run Code Online (Sandbox Code Playgroud)

我明白了:

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
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢.

小智 5

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

Vector2 a();
Run Code Online (Sandbox Code Playgroud)

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

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

 Vector2 a;
Run Code Online (Sandbox Code Playgroud)