我有一些代码在一个名为executor.cpp的文件中使用std::string。在相应的头文件中,executor.hi包含#include <string>。但是,在executor.cpp上运行cpplint会给出这样的消息:-
dec-session/executor.cpp:15: Add #include <string> for string [build/include_what_you_use] [4]
我做错了什么?我应该把它包含在executor.h中吗?
发布于 2013-12-11 19:57:29
如果在头文件中的某处使用std::string (例如,使用std::string作为参数之一的函数声明),则忽略该警告。如果可能,针对该特定情况将其过滤掉。
但是,在建议转发声明的地方,不要忽略其他警告。不在另一个标头中包含标头是好的,因为它减少了在更改标头中的内容时需要重建的文件数量。
发布于 2013-12-11 19:50:51
对下面的评论进行了编辑。这是一个可以忽略的误报。
通常,您应该将其包含在executor.cpp中,并在executor.h中转发声明类(class Thing;)。
假设,如果要生成Thing类的另一个版本,则当前必须重新编译包含executor.h的任何内容。通过将include移到cpp中,您只需重新编译executor.cpp并重新链接即可。
https://stackoverflow.com/questions/20518320
复制相似问题