-1

我创建了自己的字符串类并将其命名为“String.hpp”,并将该文件包含在我的“String.cpp”中。但是,g++/gcc 说无论我尝试什么都找不到“String.hpp”。此外,它也找不到名为“String”的类。

我认为 C++ 中的字符串是小写的“字符串”。'String' 是 C++ 中的保留类还是单词?

编辑:

我似乎通过重做代码体解决了这个问题。名字都保持不变。我想下次发生这种情况时,我会查看自己的代码并尝试在那里找到问题。

4

2 回答 2

3

在 C++ 中,字符串是标准定义的类型,而不是关键字。并且是这样使用的

#include <string>

//elsewhere 

std::string str("hi");

如果您的编译器找不到您的字符串标头,那么无论发生什么,它都不会知道您的类。

您应该像这样包含自己的标题。注意引号,而不是尖括号。尖括号意味着编译器应该搜索包含目录而不是当前目录。

#include "String.hpp"
//else where
yournamepsace::String str //etc...

这不会与标准版本冲突,但是您应该确保它是命名空间的,因为您无疑会处理非常相似的名称。

如果编译器仍然看不到,那么您需要确保该文件与您的源文件位于同一目录中。

最后,如果这是某种编程实践,那么继续进行,但如果这是生产代码,请考虑使用 std::string,世界不需要另一个字符串。:)

于 2012-04-10T15:12:11.520 回答
2

我怀疑你正在做一个

#include <String.hpp>

这会从编译器搜索文件的位置排除当前目录。如果是这种情况,你想做

#include "String.hpp"

在这种情况下,编译器也会搜索当前目录。

于 2012-04-10T15:15:15.493 回答