1. ホーム
  2. c++

[解決済み] C ++ error: a expected initializer before [function name] [closed].

2022-02-07 12:04:06

質問

C++を勉強し直しているのですが(学生時代以来)、ちょっといじりたくなって簡単なプログラムを書いてみました。問題は、プログラムをコンパイルするときに、次のように表示され、詰まってしまうことです。 error: 'stringThing'" の前に期待されるイニシャライザー。 は、なぜこのようなことが起こるのか理由があるのでしょうか?私はこれがnoobの質問かもしれないことを知っているので、私はstackoverflowをチェックしましたが、私に答えを与えた関連する質問を見つけることができませんでした。

*GNU GCCコンパイラを使用しています。

コード

#include <iostream>

using namespace std;

void string stringThing (string shiftdir, string &teststring)
    {
        if (shiftdir == "right")
        {
           teststring = teststring >> " " >> "Bit Shifted right";
        }
        else
        {
           teststring = teststring << " " << "Bit Shifted left";
        }
    }
int main()
{

    string test;

    cout << stringThing("right", "I have done a ") << endl;

    return 0;
}

解決方法は?

の戻り値の型は stringThing はどちらかでなければなりません。 void または string 両方ではありません。また <string> 文字列を使用する場合。

の戻り値を出力したいので stringThing()main であるべきだと思います。

std::string stringThing (std::string shiftdir, const std::string &teststring)

しかし、その場合、関数から文字列も返す必要があります。

if (shiftdir == "right")
    return teststring + " " + "Bit Shifted right";
else
    return teststring + " " + "Bit Shifted left";

を例にとります。

あなたのパラメータ std::string &teststring では動作しません。 const char* 引数を使用します。したがって、値によるコピーとして宣言するか string のみか、より良い const string& .