C++ 是否可以在C+;中获取对象的包含文件的名称+;?
我需要从类中实例化一个对象,比如说Cat,并知道它包含的文件的名称 主程序应如下所示:C++ 是否可以在C+;中获取对象的包含文件的名称+;?,c++,C++,我需要从类中实例化一个对象,比如说Cat,并知道它包含的文件的名称 主程序应如下所示: #include <iostream> #include <vector> #include "Cat.h" using namespace std; vector<string> getIncludes(Cat cat){ ... } int main(int argc, char *argv[])
#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);
}
#include "utils.h"
#include "animals.h"
class Cat{
public:
Cat();
~Cat();
void meow();
private:
int age;
}
调用std::vector list=getIncludes(cat)
后,list
应包含“utils.h”
和“animals.h”
如果有其他方法可以在主函数中获得这些名称,我愿意接受建议。提前感谢。不,这是不可能的,信息在运行时将不再显示 预处理器只是在编译时将
utils.h
和animals.h
的内容替换到#include
语句出现的地方
若您需要这样一个列表来检测重新编译代码的依赖关系,大多数编译器都可以在翻译单元中生成一个包含头的列表 下面是一些如何执行此操作的进一步信息:
#include
指令是针对预处理器的,而不是针对编译器的ῥεῖ 我将了解如何从编译器中获取信息。@Camilo您可能应该在问题中解释需要您这样做的实际用例。这听起来真的像第一条评论中提到的XY问题。我想这是XY问题。我的用例如下:我有一个具有实现某些接口的私有属性的类(例如:实现CatInterface的Cat),由于我无法访问这些属性,也不知道这些类将实现哪些接口,我想我可以使用Cat的头文件来知道它包含哪些接口。@Camilo以及列出包含文件如何帮助访问私有属性?我认为您应该查找动态多态性,以及如何设计Animal
接口@πάντα ῥεῖ 我不需要访问私有属性,只知道它们使用的是什么接口