Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 这个简单的模板类我做错了什么?_C++_Visual Studio_Templates - Fatal编程技术网

C++ 这个简单的模板类我做错了什么?

C++ 这个简单的模板类我做错了什么?,c++,visual-studio,templates,C++,Visual Studio,Templates,我编写了一个小类来帮助转换MSVC的笨拙类型: template <class FromType> struct convert { convert(FromType const &from) : from_(from) {} operator LARGE_INTEGER() { LARGE_INTEGER li; li.QuadPart = from_; return li; } p

我编写了一个小类来帮助转换MSVC的笨拙类型:

template <class FromType>
struct convert
{
    convert(FromType const &from)
        :   from_(from) {}
    operator LARGE_INTEGER() {
        LARGE_INTEGER li;
        li.QuadPart = from_;
        return li;
    }
private:
    FromType const &from_;
};
并从MSVC获取此错误消息:

1> e:\src\cpfs\libcpfs\device.cc(41):错误C2955:“转换”:使用类模板需要模板参数列表

1> e:\src\cpfs\libcpfs\device.cc(17):参见“convert”的声明


我想可以从我传递的整数推断出
FromType
?发生了什么?

类模板从未隐式实例化。根据您给出的类定义,您必须说:

convert<int>(0)
convert(0)
…调用该类的构造函数

使用默认模板参数,可以将(?)改进为:

模板
结构转换
{ /* ... */ };
然后调用它作为:

convert<>(0)
convert(0)
…但恐怕这是使用类模板所能做的最好的了。您可能希望使用一个函数模板为您实例化类对象:

template <typename FromType>
convert<FromType> make_convert(FromType from) {
   return convert<FromType>(from);
}
模板
转换使转换(FromType from){
返回转换(从);
}

这或多或少是std::make_pair()中使用的方法。

类模板从不隐式实例化。根据您给出的类定义,您必须说:

convert<int>(0)
convert(0)
…调用该类的构造函数

使用默认模板参数,可以将(?)改进为:

模板
结构转换
{ /* ... */ };
然后调用它作为:

convert<>(0)
convert(0)
…但恐怕这是使用类模板所能做的最好的了。您可能希望使用一个函数模板为您实例化类对象:

template <typename FromType>
convert<FromType> make_convert(FromType from) {
   return convert<FromType>(from);
}
模板
转换使转换(FromType from){
返回转换(从);
}

例如,这或多或少是std::make_pair()中使用的方法。

您需要执行类似于此转换的操作(0)您需要执行类似于此转换的操作(0)谢谢。我参加了转换工厂和转换课程。后来我把它们扔了出去,用手做了,但是我:)谢谢。我参加了转换工厂和转换课程。后来我把它们扔了出去,然后手动操作,但是meh:)