未定义的静态模板函数引用

时间:2017-11-28 15:39:00

标签: c++ qt enums static-methods

我有一个类包含我的项目的常用函数。其中一个功能是模板静态:

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);

我做错了什么以及如何让它发挥作用?

0 个答案:

没有答案