静态 QMap 的冲突声明
conflicting declaration of static QMap
我有一个简单的客户 class 和 3 个静态 QMap
//customer.h
class Customer : public QObject
{
Q_OBJECT
public:
static QMap<Customer::Type, QString> const names;
static QMap<QString, Customer::Type> const keywords;
static QMap<Customer::Type, QString> const debugStrings;
};
Customer::Type 是一个枚举,但这与问题无关
//customer.cpp
//QMap<QString, Customer::Type> const Customer::names = Customer::initNames();
QMap<QString, Customer::Type> const Customer::keywords = Customer::initKeywords();
QMap<Customer::Type, QString> const Customer::debugStrings = Customer::initDebugStrings();
所有三个 init 函数都已经过测试并且可以正常工作,它们的定义方式完全相同并且都是静态的
出于某种原因,我无法取消注释 .cpp 中的名称。如果这样做,我会收到以下错误:
error: conflicting declaration 'const QMap<QString, Customer::Type> Customer::names'
试过重命名,移到别处,总是这个不行,不知道为什么?
但是其他的都没有问题..
在您的 cpp 文件中,您的模板参数顺序错误:
QMap<QString, Customer::Type> const Customer::names = Customer::initNames();
应该是:
QMap<Customer::Type, QString> const Customer::names = Customer::initNames();
或者根据 Customer::initNames()
的 return 类型更改头文件中的变量声明
我有一个简单的客户 class 和 3 个静态 QMap
//customer.h
class Customer : public QObject
{
Q_OBJECT
public:
static QMap<Customer::Type, QString> const names;
static QMap<QString, Customer::Type> const keywords;
static QMap<Customer::Type, QString> const debugStrings;
};
Customer::Type 是一个枚举,但这与问题无关
//customer.cpp
//QMap<QString, Customer::Type> const Customer::names = Customer::initNames();
QMap<QString, Customer::Type> const Customer::keywords = Customer::initKeywords();
QMap<Customer::Type, QString> const Customer::debugStrings = Customer::initDebugStrings();
所有三个 init 函数都已经过测试并且可以正常工作,它们的定义方式完全相同并且都是静态的
出于某种原因,我无法取消注释 .cpp 中的名称。如果这样做,我会收到以下错误:
error: conflicting declaration 'const QMap<QString, Customer::Type> Customer::names'
试过重命名,移到别处,总是这个不行,不知道为什么?
但是其他的都没有问题..
在您的 cpp 文件中,您的模板参数顺序错误:
QMap<QString, Customer::Type> const Customer::names = Customer::initNames();
应该是:
QMap<Customer::Type, QString> const Customer::names = Customer::initNames();
或者根据 Customer::initNames()