下面是我的示例代码:
template<typename OutType, typename InType>
struct MyClass
{
OutType operator()(InType src)
{
return OutType(src); // Comment 1: here is the place that I want to change to make it work well
}
};
class OutClass
{
public:
OutClass(int i){}
};
int main()
{
string strInput = "Hello Guys!";
MyClass<OutClass, string>()(strInput);
return 0;
}
我的问题:我知道main函数肯定是错误的,因为OutClass没有构造函数OutClass(string str)。 我想知道是否有一种方法只改变注释1节,模板类,使这个文件被编译和链接成功。
我的英语不好,希望你们不要介意! 谢谢!
您可以从OutClass中创建以下类模板
template<class SrcType>
class OutClass {
SrcType src;
public:
OutClass(SrcType src) : src(src) {}
}
那么在您的代码中
return OutType<InType>(src);
如果您需要检查作为模板参数传递的类实际上能做什么(如果它们是算术的,加法的或可复制构造的,例如),请使用来自C++20标准的概念