c++错误:在[函数名]之前有一个预期的初始化式
C ++ error: a expected initializer before [function name]
我在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>
中,但不要依赖它。
相关文章:
- 有没有办法一次声明相同类型的多个对象,并通过一个表达式立即使用相同的右值初始化它们?
- 有没有办法使用该类的构造函数初始化另一个类的私有部分内的对象数组?
- 有没有办法拥有一个未初始化的类数组,这些类在调用 delete[] 时不会被破坏?
- 为什么我们需要模板 <int N>,因为我们有类初始化
- 为什么在 c++ 中有多种初始化变量的方法
- 从C++调用 Python 类方法,如果给定一个初始化的类作为 PyObject
- 有没有办法声明一个类,然后在 c++ 的函数中初始化它
- 当一个结构有 C-Tor 时,为什么我不能静态初始化它?
- 我有一个指向自定义项的未初始化指针表,我想检查是否已经存在某些内容
- 通过初始化列表调用另一个类的构造函数.有问题
- C++11使variadic构造函数了解一个初始化列表的初始化列表
- 静态变量已用另一个初始化
- 有没有一个C++版本在循环结束后将在for循环初始化中声明的变量保留在作用域中
- 与可以一个从另一个初始化的类的循环依赖关系
- 这是正常的 c++ 行为吗?编译器零初始化我的类,尽管有一个用户定义的构造函数
- 另一个初始化静态 C++ 类成员
- 初始化struct向量的向量的好方法(每个向量都有一个初始值)
- 有条件地初始化一个结构体字段——仅当它存在于该结构体中时
- 当返回一个用带括号的init列表初始化的对象时,我保证有一对构造函数和析构函数调用吗?
- 从另一个不同的std::数组初始化std::数组是否有特定的语法?