c++ - 如果我是根据较早的if条件创建的,如何在代码中使用后者的实例?

标签 c++ eclipse class oop

访问基于if条件声明的对象时出现错误。
(LudoPlayer是一个类)
代码为:

if(n==4){
    cin>>a >>b >>c >>d;
    LudoPlayer play(a, b, c, d);
        }
if(n==3){
    cin>>a >>b >>c;
    LudoPlayer play(a, b, c);
        }
play.Dispaly();

错误是:
错误:未在此范围内声明“播放”

最佳答案

其他两个答案将起作用(尽管Hazem Abaza的答案有一个小错误:必须首先在if块之外定义指针)。
但是,根据构造函数的定义方式,您通常无法使用adrisui3的答案中的选项。

另一种选择是使函数返回LudoPlayer
(这可以是一个自由函数,或者可能是一个更好的静态成员)

LudoPlayer makeLudoPlayer(int n) {
  if (n == 4) {
    int a, b, c, d;
    std::cin >> a >> b >> c >> d;
    return LudoPlayer(a, b, c, d);
  }
  else {
    int a, b, c;
    std::cin >> a >> b >> c;
    return LudoPlayer(a, b, c);
  }
}

//Then, main may look like this:
int main() {
  int n = 3; // or 4
  LudoPlayer play = makeLudoPlayer(n);
  play.Display();
}

关于c++ - 如果我是根据较早的if条件创建的,如何在代码中使用后者的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60464325/

相关文章:

C++ std::array 转换

c++ - Scala 相当于函数中的 C++ 静态变量

eclipse - 部署 war 时的 Jar 问题

c# - CS0246 : Missing an assembly reference - works locally, 但不在网络服务器上

php - 自动检查两个对象是否相等?

c++ - Lambda:未评估上下文中未捕获的对象

c++ - Z-Buffer 的高效实现

java - 如何使用 Eclipse 中的工具栏按钮打开向导页?

java - 使用 AspectJ 进行 Eclipse 调试单步执行

C++ 在结构中调用类的元素