我有一个关于扩展已经使用的头,源和对象的问题。 在了解了我的意思,你不得不接受,我想用这样的设计:C++编译设计:安全地扩展一个类
在我的项目,我的头只使用函数声明,并为每个定义我使用一个单独的源文件,它将编译为一个单独的对象文件。
假设我在目录“src”中有一个名为List的非常简单的类。
头看起来是这样:
文件:的src/List.hpp
//[guard]
//[includes]
class List {
void add(int value);
void remove(int index);
void clear();
};
现在三大功能将有单独的文件:
文件:的src /目录/add.cpp
void List::add(int value) {
// Do something
}
想象其他2.
这些将被在某一时刻编译,头文件将是在其他编译的类使用。
我们假设另一个名为ABC的类使用List的头文件。 对于ABC类中的每个函数,都会生成一个对象文件。
现在我们要调整列表的标题,我们不想改变的功能,我们只需要添加一个功能:
文件:的src/List.hpp
//[guard]
//[includes]
class List {
void add(int value);
int find(int value);
void remove(int index);
void clear();
};
所以另一个源文件和目标文件被产生,这就是所谓的在这个例子中:SRC /列表/ find.cpp和src /列表/ find.o
现在我的问题,这是用头一个合法的方式,来源和对象? 这会产生问题,还是完全不可能?
此外,在类ABC中名为List的类仍与新创建的名为List的类相同吗?
你的'class List'应该有成员数据字段(或者应该继承一些)。 –
@BasileStarynkevitch无关紧要,只是增加了一个不改变任何成员的函数 – Tim
你可能有这样的头文件,但是在配置你的构建器时可能会遇到麻烦(例如你的'Makefile' ) –