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