为什么我得到:
我的代码是:
#ifndef MYTREEMODELNODE_H
#define MYTREEMODELNODE_H
#include <wx/wx.h>
#include <memory>
#include <vector>
class MyTreeModelNode;
std::vector<std::unique_ptr<MyTreeModelNode>> MyTreeModelNodePtrArray;
class MyTreeModelNode final
{
public:
MyTreeModelNode(MyTreeModelNode* parent, int id, const wxString& column1, const wxString& column2, const wxString& column3, const wxString& column4);
MyTreeModelNode(MyTreeModelNode* parent, const wxString& branch);
~MyTreeModelNode();
MyTreeModelNode* GetParent();
MyTreeModelNodePtrArray& GetChildren(); //here the error
private:
MyTreeModelNode* pParent;
MyTreeModelNodePtrArray mChildren;
};
#endif // MYTREEMODELNODE_H
您的问题在这一行:
std::vector<std::unique_ptr<MyTreeModelNode>> MyTreeModelNodePtrArray;
这将
MyTreeModelNodePtrArray
声明为 std::vector<std::unique_ptr<MyTreeModelNode>>
类型的全局 variable,其标识符(名称)不能(稍后)用作变量类型。
您想要的是将
MyTreeModelNodePtrArray
定义为 std::vector<std::unique_ptr<MyTreeModelNode>>
的 alias。这可以使用
using
关键字来完成:
class MyTreeModelNode;
// Create the "MyTreeModelNodePtrArray" type alias...
using MyTreeModelNodePtrArray = std::vector<std::unique_ptr<MyTreeModelNode>>;
class MyTreeModelNode final
{
public:
MyTreeModelNode(MyTreeModelNode* parent, int id, const wxString& column1, const wxString& column2, const wxString& column3, const wxString& column4);
MyTreeModelNode(MyTreeModelNode* parent, const wxString& branch);
~MyTreeModelNode();
MyTreeModelNode* GetParent();
MyTreeModelNodePtrArray& GetChildren(); //here the error
private:
MyTreeModelNode* pParent;
MyTreeModelNodePtrArray mChildren;
};