多个头文件中的函数实现问题

时间:2018-04-13 05:42:18

标签: c++ header-files

我目前正与其他几个人一起开展一个项目。我们最初有一个带有类和方法声明的头文件和一个带有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或甚至在标题中声明函数)可能是不好的做法,但我们对此都有点新意,所以任何有关该主题的指导都将受到赞赏。

0 个答案:

没有答案