我想编写一个关于一个人每学期可以学习的课程的程序。我想定义一个称为CourseTable的数据类型,它是名为Course的结构的向量,但是在此结构中我还有一个“ prerequisites”变量,其类型我决定成为CourseTable。
typedef vector<Course> CourseTable ;
struct Course
{
....
CourseTable prerequisites;
};
我将这两个声明放在任何一个顺序中都会出现编译错误。您对我应该做什么有任何建议?
答案 0 :(得分:5)
尝试在结构内放置别名:
struct Course {
typedef std::vector<Course> CourseTable;
CourseTable prerequisites;
};
但是,更多的C ++解决方案是将using
关键字用作类型别名:
struct Course {
using CourseTable = std::vector<Course>;
CourseTable prerequisites;
};
或像下面这样向前声明struct Course
struct Course;
using CourseTable = std::vector<Course>;
struct Course {
CourseTable prerequisites;
};
答案 1 :(得分:3)
您需要在Course
之前转发声明typedef vector<Course> CourseTable;
。看起来像
struct Course;
typedef vector<Course> CourseTable;
struct Course
{
CourseTable prerequisites;
};