1

我有一些代码在名为 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 中吗?

4

2 回答 2

3

如果您在标头中的某处使用 std::string(例如,有一个以 std::string 作为参数之一的函数声明),则忽略该警告。如果可能,请针对特定情况将其过滤掉。

但是,不要忽略建议转发声明的其他警告。在另一个标头中不包含标头是好的,因为它减少了在更改标头中的某些内容时需要重建的文件数量。

于 2013-12-11T11:57:28.980 回答
0

编辑以解释下面的评论。这是一个误报,你可以忽略。

通常,您应该包含在 executor.cpp 中,并在 executor.h 中转发声明类 ( class Thing;)。

但假设是,如果您要生成Thing该类的另一个版本,那么当前必须重新编译包含 executor.h 的任何内容。通过将包含移动到 cpp 中,您只需重新编译 executor.cpp 并重新链接。

于 2013-12-11T11:50:51.143 回答