在编译时出现此错误:
horserace.cpp:32:22:错误:在“ {”令牌之前应为“,”或“;” 字符串coinflip0(h0){ ^
这是我的代码(当前试图让第一个“马”运行):
#include <iostream>
#include <string>
#include <time.h>
#include <stdlib.h>
using namespace std;
string h0 = "0................";
string h1 = "1................";
string h2 = "2................";
string h3 = "3................";
string h4 = "4................";
string coinflip0(h0);
int main(){
cout << "Press Enter to begin! " <<endl;
cin.ignore();
std::cout << h0 << endl;
// bool keepgoing = true;
// srand(time(NULL));//time goes back to zero for each loop
// while(keepgoing){
// for(int num=0; num<5; num++){
// } // end for
// } // end while
cout << "\n Press Enter to continue " << endl;
cin.ignore();
cout << endl;
string coinflip0(h0);
cout << h0 << endl;
} // end main
string coinflip0(h0){
int position = 0; // current position of horse
// find random number(0 or 1)
int num = rand() % 2;
position = position + num;
if(num==1){
std::swap(h0[position], h0[position+1]);
return string h0;
} // end if
}//end coin flip
答案 0 :(得分:2)
您的代码中有多个错误。首先是语法错误-当您声明一个接受某些参数(在您的情况下为h0
的函数)时,您必须指定参数类型。
在主要功能上方,您说将有一些功能coinflip0
:
string coinflip0(h0);
该函数返回一个string
,但是未指定参数h0
的类型。
为此,只需在函数参数前面编写类型,如下所示:
string coinflip0(string h0);
函数定义也是如此。
代码中的第二个错误是从return
函数coinflip0
开始。首先,返回类型已经在函数签名中指定(请参见上文),因此无需编写...
return string h0;
...您应该写:
return h0;
而且,如果函数说它返回了某些内容(在这种情况下为string
),则它必须在所有条件下都返回它,不仅要满足一个或两个条件。
这意味着您应该将return
语句移出if
分支,或者在函数末尾返回其他内容。
答案 1 :(得分:0)
在声明函数时,需要记住一些关键事项。
返回类型,函数名称和函数参数。
在main()函数之前
string coinflip0(h0);
因此,在这里我们可以看到您的返回类型是一个字符串,函数名称是coinflip0,传入的参数名为h0,但是您忘记指定参数类型,这很可能导致您的第一个错误(通常,您的错误消息会显示一个行号,该行号可以将您定向到导致代码无法运行的行)。相反,您的函数应如下所示:
string coinflip0(string h0); // assuming you want to pass in a string
您甚至可以将函数声明保留为
string coinflip0(string);
^,而不使用参数名称。无论您在何处定义函数,都必须提供参数名称。
在函数定义中,当您返回变量时,不需要包括数据类型,因为您已经在函数名称中指定了该数据类型。
所以你可以这样写:
return h0;