c++错误:在[函数名]之前有一个预期的初始化式

C ++ error: a expected initializer before [function name]

本文关键字:有一个 初始化 错误 函数 c++      更新时间:2023-10-16

我在c++上刷新了我的自我(自从上学以来就没有这样做过),我写了一个简单的程序只是为了混乱。我的问题是,当我编译程序时,它会阻塞语句"错误:在'stringThing'之前期望初始化器"它这样做有什么原因吗?我知道这可能是一个新手问题,所以我检查了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,还必须包含<string>

既然你想在main中输出stringThing()的返回值,我想它应该是

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&

返回类型为& help;时髦的

是什么:

void string stringThing (string shiftdir, string &teststring)

?

去掉第一个string。你的函数什么也没有返回。

那么简单:

void stringThing(string shiftdir, string &teststring)

包含缺失

您还需要#include <string> —在某些情况下,您可能会"幸运"地将其隐式包含在<iostream>中,但不要依赖它。

相关文章: