我对C ++相当陌生,并且在将向量声明为类变量时遇到问题。我已经通过使用类似的策略使它们在代码的其他地方工作,但是它不喜欢我的头文件。
error: ‘vector’ does not name a type
error: ‘vector’ has not been declared
error: expected ‘,’ or ‘...’ before ‘<’ token
error: ‘vector’ does not name a type
我评论了GCC指出的问题所在。
#ifndef HEADER_H
#define HEADER_H
#include <cstdlib>
#include <vector>
#include <string>
using std::string;
// Class declarations
class Node {
int id;
string type;
public:
Node(int, string);
int get_id();
string get_type();
string print();
};
class Event {
string name, date, time;
public:
Event(string, string, string);
string get_name();
string get_date();
string get_time();
string print();
};
class Course {
char id;
std::vector<Node*> nodes[40]; // This one
public:
Course(char, std::vector<Node*>); // This one
char get_id();
std::vector<Node*> get_nodes(); // & this one.
string print();
};
class Entrant {
int id;
Course* course;
string name;
public:
Entrant(int, char, string);
int get_id();
Course* get_course();
string get_name();
string print();
};
// Function declarations
void menu_main();
void nodes_load();
void event_create();
void entrant_create();
void course_create();
#endif /* HEADER_H */
Here's a screenshot我的IDE中的错误,如果有更多线索的话。
最佳答案
从实际编译代码中我可以看到的唯一问题是,您在Course
类中使用了Entrant
,但是此时您还没有为Course
定义。
如果您将Course
声明在Entrant
上方,则如下所示:
class Course;
class Entrant { }; //class definition
然后,根据此live example编译代码
关于c++ - “vector ”未命名类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15336428/