我目前正与其他几个人一起开展一个项目。我们最初有一个带有类和方法声明的头文件和一个带有implementation / main的.cpp文件。我们决定尝试将函数实现移动到头文件中,这样我们就可以同时处理不同的功能,而不会在git中产生太多的合并冲突。
当我编译代码时,我得到“未声明的标识符”错误以及随后的其他错误,这使我得出结论我的标题设置方式有问题。代码很长,所以我将尝试提供一个相关的例子:
(Assignment.h和Student.h包含类似设置中的类)
Instructor.h:
#pragma once
#include "Assignment.h"
#include "Student.h"
#include "Course.h"
#include <string>
#include <vector>
#include <fstream>
#include <iostream>
#include <sstream>
#include <algorithm>
using namespace std;
class Instructor {
private:
std::string instructorName;
std::vector<Course*> courseList;
public:
Course *currentCourse;
Instructor();
Instructor(std::string name);
void setName(std::string name);
std::string getName();
void firstTimeInstructor();
void addCourse();
void addCourse(std::string name);
void removeCourse();
void mainMenu();
void init();
};
...讲师方法的实现......
Course.h:
#pragma once
#include "Assignment.h"
#include "Student.h"
#include "Instructor.h"
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
using namespace std;
class Course {
private:
std::string courseName;
std::vector<Student*> studentList;
std::vector<Assignment*> assignmentList;
public:
Course(std::string name);
void setCourseName(std::string name);
std::string getCourseName();
void showCourseOptions();
void addStudent();
void addStudent(std::string first, std::string last);
void addAssignment();
void addAssignment(std::string name, double points);
void print();
void courseMenu();
};
...课程方法的实施......
第一个错误:instructor.h(17):错误C2065:'课程':未声明的标识符 (类似的是:学生,作业等)
我正在研究this post一段时间,但我真的无法找到明确的答案,我不确定它是否适用于我的情况。
我知道其中的一些(例如使用命名空间std或甚至在标题中声明函数)可能是不好的做法,但我们对此都有点新意,所以任何有关该主题的指导都将受到赞赏。