c++怎么使用其他文件的类?

a.cpp要使用b.cpp的类怎么操作?得不得新建一个b.h的文件?
2024-11-27 20:57:58
推荐回答(4个)
回答(1):

c++ 源代码通常是这样组织的,在头文件(*.h)里声明类定义,在*.cpp里定义成员函数的实现。这样可以在任何一个 *.cpp 里引用任何其他类定义而不会发生重定义问题。

确实有一种情况会 #include "template.cpp". 定义模板的时候,同样在 template.h 定义模板类,在 template.cpp 里定义其实现。但是由于模板的所有代码必须全部在头文件里定义,就会出现在 template.h 的最后 #include "template.cpp"

最常见的方式,

Student.h

#ifndef _STUDENT_H
#define _STUDENT_H

class Student {
public:
Student();
~Student();
string getName() const;
void setName(const string& name);
private:
string name_;
};

#endif

Student.cpp

#include "Student.h"

Student::Student() {
}
...
string Student::getName() const {
return name_;
}
void Student::setName(const string& name) {
name_ = name;
}

Teacher.h

#ifndef _TEACHER_H
#define _TEACHER_H

#include "Student.h" // 引用另一个类定义

class Teacher {
public:
Teacher();
vector getStudents() const;
private:
}

#endif

Teacher.cpp

#include "Teacher.h"
#include "Student.h" // 由于有 #ifndef 保护,重复引用不会造成重复定义

vector
Teacher::getStudents() const {
}

回答(2):

把你那类的声明文件加进来就行啦,声明在哪就加哪个,b.cpp也行啊,只要你类是声明在b.cpp,不过这就不符合规范了。

回答(3):

楼主你好!

如果这样的话,的确要把b.cpp里的类写在b.h中,然后#include "b.h"即可,不过,哪里看见过包含实现文件作为头的?一楼搞笑?

当然,在这之前,a.cpp与b.cpp是独立的两个实现文件,互不干扰,所以,也可以把b.cpp里的类原原本本拷贝到a.cpp里作为一个新类即可。

希望对你有所帮助,谢谢!

回答(4):

#include"a.cpp"