-1

独自の文字列クラスを作成して「String.hpp」という名前を付け、このファイルを「String.cpp」に含めました。しかし、g++/gcc は、何を試しても「String.hpp」が見つからなかったと言っています。さらに、「String」という名前のクラスも見つかりません。

C ++の文字列は小文字の「文字列」だと思いました。「文字列」は 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 に答える