如何递归使用typedef?

Peg*_*egi 2 c++ typedef c++11

我想编写一个关于一个人每学期可以参加的课程的程序。我想定义一个名为 CourseTable 的数据类型,它是一个名为 Course 的结构体的向量,但在这个结构体中我还有一个“先决条件”变量,它的类型是决定成为CourseTable。

typedef vector<Course> CourseTable ;
struct Course
{
  ....
  CourseTable prerequisites;
};
Run Code Online (Sandbox Code Playgroud)

在我放置这两个声明的任一顺序中,我都遇到编译错误。您对我应该做什么有什么建议吗?

Nut*_*ker 5

尝试在结构中放置一个别名:

struct Course {
    typedef std::vector<Course> CourseTable;
    CourseTable prerequisites;
};
Run Code Online (Sandbox Code Playgroud)

但是,更多的 C++-ish 解决方案是使用using关键字作为类型别名:

struct Course {
    using CourseTable = std::vector<Course>;
    CourseTable prerequisites;
};
Run Code Online (Sandbox Code Playgroud)

或转发声明struct Course如下:

struct Course;
using CourseTable = std::vector<Course>;

struct Course {
    CourseTable prerequisites;
};
Run Code Online (Sandbox Code Playgroud)