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

Unresolved externals with inline constructor

本文关键字:外部 构造函数      更新时间:2023-10-16

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

然而,当我想实例化我的矢量没有参数,我得到未解决的外部错误,我不知道为什么。但是,当我使用其他带参数的构造函数时,它是可以的。

这是我的班级:

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:DevelopmentProjectsEnginex64DebugTest.exe : fatal error LNK1120: 1 unresolved external

任何想法?谢谢。

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

Vector2 a();

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

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