C ++错误:[函数名称]之前的预期初始化程序

时间:2013-01-14 15:57:38

标签: c++ gcc compiler-errors

我在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;
}

2 个答案:

答案 0 :(得分:3)

返回类型是......时髦

什么是:

void string stringThing (string shiftdir, string &teststring)

摆脱第一个string。你的函数什么都不返回。

所以,简单地说:

void stringThing(string shiftdir, string &teststring)

包含缺失

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

答案 1 :(得分:1)

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&