我有一个类包含我的项目的常用函数。其中一个功能是模板静态:
COMMON.H
#include <QMetaEnum>
#include <QString>
class Common
{
public:
Common();
template<typename T> static QString EnumToString(const T value);
};
等实施:
common.cpp
template<typename T>
QString Common::EnumToString (const T value)
{
return QString(QMetaEnum::fromType<T>().valueToKey(value));
}
编译没有问题,但是当我想使用这样的函数时:
MyEnum enum = MyEnum::Value1;
qDebug() << Common::EnumToString<MyEnum>(enum);
我收到一些奇怪的链接器错误:
错误:未定义对`QString的引用 常见:: EnumToString(MyEnum)&#39;
MyEnum已在Qt metasystem注册:
enum class MyEnum
{
Value1,
Value2,
Value3
};
Q_ENUM(MyEnum);
我做错了什么以及如何让它发挥作用?