我有一些代码在名为executor.cpp的文件中使用std :: string。在相应的头文件中,executor.h包含#include <string>
。但是,在executor.cpp上运行cpplint会给我一条消息: -
dec-session/executor.cpp:15: Add #include <string> for string [build/include_what_you_use] [4]
我做错了什么?我应该将它包含在executor.h中吗?
答案 0 :(得分:3)
如果在标题中的某处使用std :: string(例如,使用std :: string作为参数之一的函数声明),则只需忽略该警告。如果可能,请针对该特定情况进行过滤。
但是,请勿忽略其建议转发声明的其他警告。不包括另一个标头中的标头是好的,因为它减少了更改标题中的内容时需要重建的文件数。
答案 1 :(得分:0)
编辑以考虑以下评论。你可以忽略这是一种误报。
通常,您应该包含在executor.cpp中,只需在executor.h中声明类(class Thing;
)。
假设,如果您要生成Thing
类的另一个版本,那么包含executor.h的任何内容都必须重新编译。通过将include移动到cpp中,您只需重新编译executor.cpp并重新链接。