不能调用对象c++
Cannot call objects c++
我是 c++ 和堆栈溢出的新手,所以如果我不完全理解你在说什么,请原谅,我的目标是将我的井字代码从使用函数转换为 类 和对象使用头文件。
在创建一个对象 returns int main 在结果中使用的字符串后,我在 main.cpp 中声明它,并在 if 语句中尝试调用它时(if (rps(p1, p2) == "tie")
) 我收到“标识符未定义”错误。我之前在指导教程中调用过这些对象并回顾项目并将其实施到其中,它有效。我认为这与程序的范围有关,但我已经尝试移动它和其他东西,只需要一些帮助(我的代码在下面提供)。
这是我在main.cpp
中创建的对象
std::string Game::rps(std::string p1, std::string p2)
{
std::string tie = "tie";
std::string p1w = "p1w";
std::string p2w = "p2w";
//tie
if (p1 == p2) {
return tie;
}
//rock vs sci p1
if (p1 == "rock" && p2 == "scissor") {
return p1w;
}
//rock vs sci p2
if (p2 == "rock" && p1 == "scissor") {
return p2w;
}
//paper vs rock p1
if (p1 == "paper" && p2 == "rock") {
return p1w;
}
//paper vs rock p2
if (p2 == "paper" && p1 == "rock") {
return p2w;
}
//sci vs paper p1
if (p1 == "scissor" && p2 == "paper") {
return p1w;
}
//sci vs paper p2
if (p2 == "scissor" && p1 == "paper") {
return p2w;
}
}
调用对象:
if (rps(p1, p2) == "tie") {
cout << "Same Move, Try Again!" << "\n" << "\n";
}
头文件:
#pragma once
#include <string>
class Game
{
public:
private:
std::string rps(std::string p1, std::string p2);
};
首先,成员函数 rps
将无法访问,如果您希望它被 class 用户调用(即在 main
中,而不是由 [=25= 内部调用) ] 实例),你需要把它放在 public
.
class Game {
public:
std::string rps(std::string p1, std::string p2);
};
然后您需要在 main
中创建 Game
的实例。如
int main () {
Game g;
std::string p1, p2;
// Assume we assigned some values to p1 and p2
if (g.rps(p1, p2) == "tie") {
cout << "Same Move, Try Again!" << "\n" << "\n";
}
}
注意,我们在创建的游戏实例 class 对象 g
上调用 public 成员函数。因此,我们首先需要实例化 Game
class,因为 class 本身只是创建“有形”对象的方法。
- 您必须将函数 rps 放入 public 才能在 main
中使用它
- 您必须声明您的 class 成员 的 实例 [例如:游戏玩家 1(游戏是你声明的 class)]
我是 c++ 和堆栈溢出的新手,所以如果我不完全理解你在说什么,请原谅,我的目标是将我的井字代码从使用函数转换为 类 和对象使用头文件。
在创建一个对象 returns int main 在结果中使用的字符串后,我在 main.cpp 中声明它,并在 if 语句中尝试调用它时(if (rps(p1, p2) == "tie")
) 我收到“标识符未定义”错误。我之前在指导教程中调用过这些对象并回顾项目并将其实施到其中,它有效。我认为这与程序的范围有关,但我已经尝试移动它和其他东西,只需要一些帮助(我的代码在下面提供)。
这是我在main.cpp
中创建的对象std::string Game::rps(std::string p1, std::string p2)
{
std::string tie = "tie";
std::string p1w = "p1w";
std::string p2w = "p2w";
//tie
if (p1 == p2) {
return tie;
}
//rock vs sci p1
if (p1 == "rock" && p2 == "scissor") {
return p1w;
}
//rock vs sci p2
if (p2 == "rock" && p1 == "scissor") {
return p2w;
}
//paper vs rock p1
if (p1 == "paper" && p2 == "rock") {
return p1w;
}
//paper vs rock p2
if (p2 == "paper" && p1 == "rock") {
return p2w;
}
//sci vs paper p1
if (p1 == "scissor" && p2 == "paper") {
return p1w;
}
//sci vs paper p2
if (p2 == "scissor" && p1 == "paper") {
return p2w;
}
}
调用对象:
if (rps(p1, p2) == "tie") {
cout << "Same Move, Try Again!" << "\n" << "\n";
}
头文件:
#pragma once
#include <string>
class Game
{
public:
private:
std::string rps(std::string p1, std::string p2);
};
首先,成员函数 rps
将无法访问,如果您希望它被 class 用户调用(即在 main
中,而不是由 [=25= 内部调用) ] 实例),你需要把它放在 public
.
class Game {
public:
std::string rps(std::string p1, std::string p2);
};
然后您需要在 main
中创建 Game
的实例。如
int main () {
Game g;
std::string p1, p2;
// Assume we assigned some values to p1 and p2
if (g.rps(p1, p2) == "tie") {
cout << "Same Move, Try Again!" << "\n" << "\n";
}
}
注意,我们在创建的游戏实例 class 对象 g
上调用 public 成员函数。因此,我们首先需要实例化 Game
class,因为 class 本身只是创建“有形”对象的方法。
- 您必须将函数 rps 放入 public 才能在 main 中使用它
- 您必须声明您的 class 成员 的 实例 [例如:游戏玩家 1(游戏是你声明的 class)]