嗨,我正在尝试执行以下操作。

如果从cmd行传递了一些变量,即

 const char * outputtype1
 const char * outputtype2


后者可以为NULL。

然后,如果在命令行中设置了outputtype2,我想创建一个类的实例。如何使此类的实例可选。即

 if(outputtype2)
 {
 cats thomas(outputtype2);
 }


我以后再用

thomas.eatfood(whiskers);


这是令人不安的地方。如果outputtype2为null,显然不存在托马斯,但是为什么我不能这样做呢?

 if (outputtype2)
 {
 cats thomas(outputtype2);
 }


没有错误
在此范围内未声明“托马斯”。我担心这里缺少一些基本规则。

最佳答案

如果我理解您的问题,那么问题是您在if范围内创建了该类的实例。稍后,您尝试调用对象thomas的eatfood方法,但是该对象在当前作用域中不存在。

也许您想这样做...

if (outputtype2) {
  cats thomas(outputtype1);
  thomas.eatfood(whiskers);
}


或使用指针...

Cats* thomas = NULL;

if (outputtype2) {
  thomas = new Cats(outputtype1);
}

if (thomas != NULL) {
  thomas->eatfood(whiskers);
}

09-27 12:07