美好的一天,
我第一次遇到这种错误。
// another.h
struct Item {
QString name = QString();
QString description = QString();
QVariant value = QVariant();
struct Interface {
uint id = 0;
uint pos = 0;
} mkio, uks;
struct Element {
float weight = 0;
struct Range {
uint from = 0;
uint to = 0;
} range;
int index = 0;
} element;
};
我想将这个嵌套的结构存储在一个流中。所以,
// another.h
QDataStream &operator<<(QDataStream &out, const Item::Interface &interface)
{
return out << interface.id
<< interface.pos;
}
// and another overload operator>> and operator<<...
// Another fields of the `Item` struct are compiling without any error.
1)错误:在'struct'之前预期','或'...' QDataStream&amp; operator&lt;&lt;(QDataStream&amp; out,const Item :: Interface&amp; interface)
2)another.h:34:17:错误:在'struct'之前预期的primary-expression
退出&lt;&lt; interface.id
^
another.h:34:17:错误:预期';'在'struct'之前
another.h:34:17:错误:在'struct'之前预期的primary-expression
答案 0 :(得分:4)
代码中的某处,很可能是在库头中,以下(或与它非常相似的东西)隐藏:
#define interface struct
使编译器看到:
QDataStream &operator<<(QDataStream &out, const Item::Interface &struct)
{
return out << struct.id
<< struct.pos;
}
并且变得非常沮丧。
重命名参数。
答案 1 :(得分:0)
我发现错误的地方是变量“interface”的名称(来自小写字母)。
将其重命名为i
,例如清除代码。
QDataStream &operator<<(QDataStream &out, const Item::Interface &i /*nterface*/)
在命名空间中声明的类型Interface
因此更改其名称不是结果。
所有
的Thx