提问者:小点点

我能确定构造函数是否存在吗?


下面是我的示例代码:

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节,模板类,使这个文件被编译和链接成功。

我的英语不好,希望你们不要介意! 谢谢!


共1个答案

匿名用户

您可以从OutClass中创建以下类模板

template<class SrcType>
class OutClass {
    SrcType src;
public:
    OutClass(SrcType src) : src(src) {}
}

那么在您的代码中

 return OutType<InType>(src);   

如果您需要检查作为模板参数传递的类实际上能做什么(如果它们是算术的,加法的或可复制构造的,例如),请使用来自C++20标准的概念