繁体   English   中英

模板成员 function 的实例化

[英]Instantiation of template member function

Class.h

class Class {
public:
    template <typename T> void function(T value);
};

Class.cpp

template<typename T> void Class::function(T value) {
    // do sth
}

main.cpp中:

#include "Class.h"

int main(int argc, char ** argv) {
    Class a;
    a.function(1);
    return 0;
}

我收到一个链接错误,因为Class.cpp从不实例化void Class::function<int>(T) 您可以使用以下命令显式实例化模板 class:

template class std::vector<int>;

如何显式实例化非模板 class 的模板成员?

谢谢,

您可以在Class.cpp使用以下语法:

template void Class::function(int);

由于类型推导,模板参数可以省略,适用于函数模板。 因此,以上相当于以下内容,更简洁:

template void Class::function<int>(int);

请注意,没有必要指定函数参数的名称 - 它们不是函数(或函数模板)签名的一部分。

您是否在Class.cpp尝试了以下Class.cpp

template void Class::function<int>(int value);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM