举报

[BUG] | 继承 IMAGE 类时必须重写 SetDefault() 函数

0

在 VS2022 + EasyX 20240601(目前的最新版)的环境下测试下面的代码:

#include <easyx.h>

class MyClass : public IMAGE
{
};

int main()
{
	MyClass o;
	return 0;
}

将会报错:

1>main.obj : error LNK2001: 无法解析的外部符号 "private: virtual void __cdecl IMAGE::SetDefault(void)" (?SetDefault@IMAGE@@EEAAXXZ)

必须将代码改成下面这样:

#include <easyx.h>

class MyClass : public IMAGE
{
public:
	void SetDefault() override {}
};

int main()
{
	MyClass o;
	return 0;
}

即重写 SetDefault 函数,才能解决报错。但似乎在 MinGW 版本的 EasyX 中无此问题。

由于 SetDefault 被声明为 IMAGE 的 private 函数,且不是纯虚函数,所以继承 IMAGE 时本不应该重写 SetDefault,所以我认为这可能是 EasyX 的 BUG。

ava
huidong

2025-7-25

技术讨论社区