使用方法返回值作为参数c++
Use method return value as parameter c++
我正在努力学习C++,并试图制作一个简单的TicTacToe游戏。
我创建了一个Board对象。这个对象包含一个多维数组来创建剧本。
我还创建了两个类Player的对象。这两个对象都包含玩家的名称和符号。我为玩家对象创建了一个方法,让玩家移动。他们必须输入一个Y值和一个X值。我想在板方法中使用这个值来更改多维数组。
这是获得玩家想要放置其符号的位置的整数值的方法之一:
int Player::PlayerTurnX()
{
int x;
cout << "Enter the x-axe number which column you want to place your " << _symbol << ". ";
cin >> x;
while (!(x == 1 || x == 2 || x == 3)) {
cout << "Please enter a number between 1 and 3. ";
cin >> x;
return x;
}
return x;
}
这会返回一个整数值,对吧?我对Y值有同样的方法(我不知道如何通过1方法传递2个值,尝试了一个数组,但无法使其工作)。
然后我的换板方法看起来是这样的:
void Board::AddPlayersTurn(int spoty, int spotx, char symbol) {
int y = spoty;
int x = spotx;
string symbol1 = to_string(symbol);
_boardSpots[y][x] = " " + symbol1 + " ";
}
那么剩下的就是调用这些方法了。我想使用X和Y方法作为我的换板方法的参数:
Board1.AddPlayersTurn(Player1.PlayerTurnY, Player1.PlayerTurnX, Player1.GetSymbol());
Board1.printBoard();
printBoard()是一个简单的方法,可以将其打印到命令提示符。
我在尝试这样做时遇到了这个错误:
'Player::PlayerTurnY': non-standard syntax; use '&' to create a pointer to member
X值也是如此。
任何帮助都将不胜感激!
问候。
在您的代码中,Board1.AddPlayersTurn(Player1.PlayerTurnY, Player1.PlayerTurnX, Player1.GetSymbol());
在PlayerTurnY之后没有()
(我想这是一个拼写错误)。但对于编译器来说,这似乎是一个不同的拼写错误-编译器认为,你试图获得成员函数的地址,却忘记在它前面使用&
。原因是在C++之前,在C中,人们只需键入函数的名称就可以获得函数的地址。所以很多人认为C++中的方法是一样的,编译器正在努力帮助他们。
显然,这不是你想要的。
您忘记将括号放在方法PlayerTurn 的函数调用处
编译器正在解释您的语句,就好像您试图获得指向成员函数PlayerTurnX和PlayerTurnY的指针一样。这就是为什么错误消息没有直接指向真正的原因。
- 如何反转整数参数包
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 如何使用默认参数等选择模板专业化
- 模板参数替换失败,并且未完成隐式转换
- 具有默认模板参数的多态类的模板推导失败
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 函数调用中参数的顺序重要吗
- 部分定义/别名模板模板参数
- 模板-模板参数推导:三个不同的编译器三种不同的行为
- 使用不带参数的函数访问结构元素
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 如何使用Luacneneneba API正确读取字符串和表参数
- 在派生函数中指定void*参数
- 视图中的参数推导失败:take_while
- static_assert在宏中,但也可以扩展到可以用作函数参数的东西
- 使用指向成员的指针将成员函数作为参数传递
- 没有名称的C++模板参数
- 如何将enable-if与模板参数和参数包一起使用