我想将any-type参数传递给我的函数func1()
。
所以这是我的代码:
myclass.h :
public:
myclass();
template<typename T> void func1(T object);
myclass.cpp :
template<typename T>
void myclass::func1(T object)
{
return;
}
main.cpp :
int a=0;
myclass::func1<int>(a);
但我收到了这个错误:
error: cannot call member function 'void myclass::func1(T) [with T = int]' without object
我的错误在哪里?
答案 0 :(得分:5)
您不能简单地在模板函数中分隔声明和定义。对模板函数最简单的方法是在头文件中的函数声明中提供代码体。
如果要在没有类对象的情况下调用该函数,请在函数签名中添加static。
header.hpp
#include <iostream>
class test_class{
public:
template<typename T> static void member_function(T t){
std::cout << "Argument: " << t << std::endl;
}
};
的main.cpp
#include <iostream>
#include "header.hpp"
int main(int argc, char ** argv){
test_class::member_function(1);
test_class::member_function("hello");
}