C++ C++;基于条件创建对象
我基于命令行选项创建一个对象 在C中++C++ C++;基于条件创建对象,c++,C++,我基于命令行选项创建一个对象 在C中++ Capture *cc = NULL; if ( argv[2] == "capture" ) cc = new Capture(<some args>); Capture*cc=NULL; 如果(argv[2]=“捕获”) cc=新捕获(); 现在,为了在代码的不同部分使用它,我是否应该创建一个包含伪函数的CaptureSub,以便永远不会访问空指针。还是有更简单的方法 谢谢 呃,那不是一个指针。如果它编译,那是因为Capture类
Capture *cc = NULL;
if ( argv[2] == "capture" )
cc = new Capture(<some args>);
Capture*cc=NULL;
如果(argv[2]=“捕获”)
cc=新捕获();
现在,为了在代码的不同部分使用它,我是否应该创建一个包含伪函数的CaptureSub,以便永远不会访问空指针。还是有更简单的方法
谢谢
呃,那不是一个指针。如果它编译,那是因为Capture类有一个接受int或指针的隐式构造函数,或者有一个操作符=
要更正此用法
Capture* cc = NULL;
在此之后,您应该以一种只有在初始化对象时才使用该对象的方式来构造代码。如果不可能,那么每次检查之前都要检查
呃,那不是一个指针。如果它编译,那是因为Capture类有一个接受int或指针的隐式构造函数,或者有一个操作符=
要更正此用法
Capture* cc = NULL;
在此之后,您应该以一种只有在初始化对象时才使用该对象的方式来构造代码。如果不可能,那么每次检查之前都要检查
我应该创建包含伪函数的CaptureSub吗
你是说那个?是的,那很好
还是有更简单的方法
我不确定是否有更简单的方法(Null对象模式是一种很好的方法),但一种非常惯用的方法是检查Null
if (cc != NULL)
{
// do something with cc
}
我应该创建包含伪函数的CaptureSub吗
你是说那个?是的,那很好
还是有更简单的方法
我不确定是否有更简单的方法(Null对象模式是一种很好的方法),但一种非常惯用的方法是检查Null
if (cc != NULL)
{
// do something with cc
}
首先,您的
if
条件永远不会为真,因为=
将字符串literal捕获的地址与第二个命令行参数进行比较。您需要将其更改为类似于strcmp(“捕获”,argv[2]==0)
或(字符串(“捕获”)==string(argv[2])
第二,我认为我们需要仔细考虑你想要的东西的语义。如果未指定“捕获”选项,所需的行为是什么?做什么?如果没有,那么,正如@Doug T.所提到的,空对象模式是一个不错的选择,而不是将代码与
Null
进行比较 首先,您的if
条件永远不会为真,因为=
将字符串literal捕获的地址与第二个命令行参数进行比较。您需要将其更改为类似于strcmp(“捕获”,argv[2]==0)
或(字符串(“捕获”)==string(argv[2])
第二,我认为我们需要仔细考虑你想要的东西的语义。如果未指定“捕获”选项,所需的行为是什么?做什么?如果没有,那么,正如@Doug T.所提到的,空对象模式是一个不错的选择,而不是将代码与
Null
进行比较 -1。发布至少应该编译的代码,这样我们就不会浪费时间修改语法。我假设这里有一个输入错误,你的意思是Capture*cc-1。发布至少应该编译的代码,这样我们就不会浪费时间修改语法。我假设这里有一个输入错误,你的意思是Capture*cc