模板化唯一指针 我对C++很陌生.

模板化唯一指针 我对C++很陌生.,c++,oop,templates,smart-pointers,C++,Oop,Templates,Smart Pointers,我有一个名为Main\u Alg的类,它运行(通用)Main算法。我有不同的类,基类是Calc_Type,两个派生类是classA和classB 当创建Main\u Alg时,run将运行通用算法,方法为A或B(在计算类型中为纯虚拟)。执行哪一个由用户指定 实现这一目标的最佳方式是什么 我想到了一个模板类Main\u alg: if(参数==“A”){ std::唯一主管道(新主管道); 主菜单->运行; } 否则…//为了B什么的 运行中: std::unique_ptr方法; 方法->求解

我有一个名为
Main\u Alg
的类,它运行(通用)Main算法。我有不同的类,基类是
Calc_Type
,两个派生类是class
A
和class
B

当创建
Main\u Alg
时,
run
将运行通用算法,方法为
A
B
(在
计算类型中为纯虚拟)。执行哪一个由用户指定

实现这一目标的最佳方式是什么

我想到了一个模板类
Main\u alg

if(参数==“A”){
std::唯一主管道(新主管道);
主菜单->运行;
}
否则…//为了B什么的
运行中:

std::unique_ptr方法;
方法->求解;
方法->getsmthg//方法仅对基类Calc_类型`
这会使事情变得过于复杂吗?这是好的做法吗?此外,如有任何阅读建议,我们将不胜感激

并致电:

if (parms == "A"){
    run<A>();
else
    run<B>();
if(参数==“A”){
run();
其他的
run();

< p>如果你是C++新手,不要自己编写模板。它们很酷,但是很难掌握,尤其是当你开始用C++编程时。

您已经写了一些关于纯虚拟类的东西。如果您有它,那么您不需要模板

类计算类型{
虚~Calc_Type(){}
虚空运行()=0;
};
A类:公共计算类型{
公众:
void run()重写{
要做的事;
}
};
B类:公共计算类型{
公众:
void run()重写{
其他要做的事;
}
};
std::unique_ptr createJob(const std::string&name)
{
如果(name=“A”){
返回std::make_unique();
}否则,如果(name=“B”){
返回std::make_unique();
}
返回std::make_unique();
}
//代码中的某个地方:
自动作业=创建作业(用户输入);
...
作业->运行();

关于你的例子,
Main\u Alg
是模板,
Main\u Alg
是类。你必须使用类作为
std::unique\u ptr
的模板参数。对这个问题的解释仍然模糊不清。我基本上想要一个使用方法solve的通用类(Main\u Alg)(这是类a和类B的成员函数)。根据模板创建a或B,并执行a或B的求解。这就是我要找的!谢谢:)
template<class T>
void run()
{
    Main_Alg<T> m;
    m.run();
}
if (parms == "A"){
    run<A>();
else
    run<B>();