我创建了自己的字符串类并将其命名为“String.hpp”,并将该文件包含在我的“String.cpp”中。但是,g++/gcc 说无论我尝试什么都找不到“String.hpp”。此外,它也找不到名为“String”的类。
我认为 C++ 中的字符串是小写的“字符串”。'String' 是 C++ 中的保留类还是单词?
编辑:
我似乎通过重做代码体解决了这个问题。名字都保持不变。我想下次发生这种情况时,我会查看自己的代码并尝试在那里找到问题。
在 C++ 中,字符串是标准定义的类型,而不是关键字。并且是这样使用的
#include <string>
//elsewhere
std::string str("hi");
如果您的编译器找不到您的字符串标头,那么无论发生什么,它都不会知道您的类。
您应该像这样包含自己的标题。注意引号,而不是尖括号。尖括号意味着编译器应该搜索包含目录而不是当前目录。
#include "String.hpp"
//else where
yournamepsace::String str //etc...
这不会与标准版本冲突,但是您应该确保它是命名空间的,因为您无疑会处理非常相似的名称。
如果编译器仍然看不到,那么您需要确保该文件与您的源文件位于同一目录中。
最后,如果这是某种编程实践,那么继续进行,但如果这是生产代码,请考虑使用 std::string,世界不需要另一个字符串。:)
我怀疑你正在做一个
#include <String.hpp>
这会从编译器搜索文件的位置排除当前目录。如果是这种情况,你想做
#include "String.hpp"
在这种情况下,编译器也会搜索当前目录。