我需要从类中实例化一个对象,让我们说 Cat ,并知道其包含文件的名称。
主程序看起来像这样:
#include <iostream>
#include <vector>
#include "Cat.h"
using namespace std;
vector<string> getIncludes(Cat cat){
...
}
int main(int argc, char *argv[])
{
Cat cat;
std::vector<string>list = getIncludes(cat);
}
Cat 类头文件将如下所示:
#include "utils.h"
#include "animals.h"
class Cat{
public:
Cat();
~Cat();
void meow();
private:
int age;
}
致电std::vector<string> list = getIncludes(cat)
后,list
应包含"utils.h"
和"animals.h"
。
如果还有其他方法可以在主要功能中获取这些名称,我愿意接受建议。提前谢谢。
答案 0 :(得分:5)
不,那是不可能的,这些信息在运行时不再存在。
预处理器只是在编译时在utils.h
语句出现的位置替换animals.h
和#include
的内容。
如果您需要这样的列表来检测重新编译代码的依赖项,那么大多数编译器都可以在翻译单元中生成包含的标题列表。
以下是有关如何执行此操作的更多信息: