gpt4 book ai didi

c++ - 是什么破坏了这段代码?

转载 作者:太空宇宙 更新时间:2023-11-04 14:49:19 25 4
gpt4 key购买 nike

我很抱歉用这样一个“有意义”的标题提出问题,但我就是不明白编译器在提示什么,代码刚刚工作正常,我添加了一个额外的方法,但一切都坏了。删除最后的更改并没有解决它。

class NodeWrapper : public QObject {
Q_OBJECT
Q_ENUMS(NodeType NodeStatus)
Q_PROPERTY(NodeType type READ type WRITE setType NOTIFY typeChanged)
Q_PROPERTY(QString typeString READ typeString NOTIFY typeChanged)
Q_PROPERTY(NodeStatus status READ status WRITE setStatus NOTIFY statusChanged)

public:
NodeWrapper(QObject * parent = 0) : QObject(parent) { }

enum NodeType {
T_NODE,
T_FOLDER
};

enum NodeStatus {
S_OK,
S_WARNING,
S_ERROR
};

// type
inline NodeType type() { return _type; }
inline QString typeString() { return metaObject()->enumerator(0).key(type()); }
inline void setType(NodeType v) {
if (_type != v) {
_type = v;
emit typeChanged();
}
}
// status
inline NodeStatus status() { return _node.getStatus(); }
inline void setStatus(NodeStatus v) {
if (_node.getStatus() != v) {
_node.setStatus(v);
emit statusChanged();
}
}

signals:
void typeChanged();
void statusChanged();

private:
NodeType _type;
Node _node;
};

错误从 NodeStatus 枚举的 S_OK 成员开始:

error: expected identifier before '(' token
S_OK,
^
error: expected '}' before '(' token
error: expected ')' before numeric constant
S_OK,
^
error: 'NodeType' does not name a type
inline NodeType type() { return _type; }
^
error: 'metaObject' was not declared in this scope
inline QString typeString() { return metaObject()->enumerator(0).key(type()); }
^
error: 'type' was not declared in this scope
inline QString typeString() { return metaObject()->enumerator(0).key(type()); }
^
...

最佳答案

我猜你无意中包含了 <windows.h>在此定义之前,它通过#define 将 S_OK 重新定义为数字,从而导致枚举中的编译错误。全局命名空间中的这种困惑是 C 兼容性的不幸结果,实际上最安全的做法是重命名该字段(也许是 S_SUCCESS?)

关于c++ - 是什么破坏了这段代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20198878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com