1. ホーム
  2. c++

[解決済み] C++エラー -- 式はintegralまたはenum型でなければならない -- これを文字列から連結して得るには?

2022-02-28 22:27:10

質問

C++エラー 式はintegralまたはenum型でなければならない 文字列を連結してこれを取得する?

そこで toString() C++のクラスのコードを持っています。

string bags = "Check in " + getBags() + " bags";

こんな感じで文字列を宣言できるんじゃなかったっけ?(私はJava出身で、C++を学ぼうとしています)。その bags はVisual Studioでは下線が引かれていて、問題になっていますが。

式は、integral または enum 型でなければなりません。

getBags() を返すだけです。 int .

このようなことが起こる別の例として、次のようなものがあります。

string totalPrice = "Grand Total: " + getTotalPrice();

getTotalPrice() が返されます。 float というエラーで下線が引かれているものです。

でも、その後にこんな行を入れると。

string blah = getBags() + "blah";

エラーはありません。

私はここで何を理解していないのでしょうか?

どのように解決するのですか?

"Check in " は、実際には const char * . 追加する getBags() (この int を追加すると、別の const char* . 2つのポインタを追加することはできないので、コンパイラエラーが発生します。

の両方を変換する必要があります。 "Check in "getBags() を文字列に変換してから連結しています。

string bags = std::string("Check in ") + std::to_string(getBags()) + " bags";

" bags" に暗黙的に変換されます。 string .