我在下面的代码中遇到编译错误。
class A
{
public:
A()
{
}
~A()
{
}
void func()
{
cout <<"Ha ha ha \n";
}
};
class C
{
public:
C()
{
}
~C()
{
}
template<typename type> func()
{
type t;
t.func();
}
void callme()
{
func<A>();
}
};
答案 0 :(得分:3)
func<T>()
的定义未指定其返回类型,这在C ++中无效。
应该是:
template<typename type> void func()
{
type t;
t.func();
}
答案 1 :(得分:3)
VC6不支持成员函数模板。你实际上有几个解决方案:
将func()
移出课程定义
template<typename type> void func()
{
type t;
t.func();
}
或重写callme()
void callme()
{
A a;
a.func();
}
或使用课程模板
class C
{
public:
template<class T> struct func
{
void operator()()
{
T t;
t.func();
}
};
void callme()
{
func<A>()();
}
};