我有一个简单的二维向量类,它实现为内联函数/运算符。
但是,当我想要实例化没有参数的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
有什么想法吗?感谢。
答案 0 :(得分:5)
这是因为您没有使用以下内容实例化对象:
Vector2 a();
这实际上是一个函数声明,这就是它在链接时抱怨缺少函数的原因。
要使用默认构造函数创建对象,它应该是:
Vector2 a;