是否可以在C ++中将类作为函数的参数传递

时间:2014-03-11 19:48:35

标签: c++ class templates

以下是我想要做的一些sudo代码:

void thing (storedClassArg){
    virtualClass<x,y> in1 = new storedClassArg<x,y>;
    virtualClass<x,z> in2 = new storedClassArg<x,z>;
}

main:
storedClass;
if( inputThingy)
    storedClass = type1;
else
    storedClass = type2;
thing(storedClass);

1 个答案:

答案 0 :(得分:2)

简答:不。

您不能将类作为参数传递给函数。您只能传递。值是指对象或函数。

可以将一个类作为参数传递给模板。但是,模板参数必须在编译时确定,而不是在运行时确定。

C ++仅通过继承提供运行时多态性。如果要创建一个在运行时才能知道其类型的对象,那么您可以做的就是创建所有可能的类型,您可能希望创建一个公共库的派生类。

即便如此,您也无法使用您想要创建的本身类型作为函数的参数。您必须传入其他一些值,然后对其进行分支以确定您希望在运行时创建的类型。