我创建了一个对象模板类,我希望第二个函数在 T==int 时运行。但我的问题是,在 sec func() 中,我想在对象上运行第一个 func。
我该怎么做?
template<typename T> Object<T>::func(){
}
template<> Object<int> Object<int>::func(){
//somecode
// I want here run the first func() on the object.
}
谢谢
最佳答案
将接口(interface)与实现分离是一件简单的事情:
template<typename T> Object<T>::func_impl(){
// Do stuff here
}
template<typename T> Object<T>::func(){
// all func does is call func_impl
func_impl<T>();
}
template<> Object<int> Object<int>::func(){
// Maybe do some stuff...
func_impl<int>(); // ... then call your implementation...
// .. and maybe do some more stuff
}
澄清一下:您所做的不是重载。这称为模板特化。如果您为该类型提供了专门化,则不可能为给定类型实例化通用模板。
关于c++ - 模板类二重载函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32508330/