我有重载方法的模板。我正在尝试创建指向重载方法的指针。
template<typename T>
class Future {
public:
const T& get() const;
bool get(T*, int timeoutMs) const;
};
...
const void*&(Future<void*>::*x)()const = &Future<void*>::get;
编译因以下错误而失败:
no matches converting function 'get' to type 'const void*& (class Future<void*>::*)()const'
candidates are: const T& Future<T>::get() const [with T = void*]
bool Future<T>::get(T*, int) const [with T = void*]
我试图在没有任何运气的情况下输入Future<void*>
。
答案 0 :(得分:3)
如果T为void *,const应该在指针上,而不是指向内存:
void* const & (Future<void*>::*x)() const = &Future<void*>::get;
答案 1 :(得分:0)
模板本身没有指针。模板是模板,它告诉c ++如何创建一个类。所以
template<class T>
class Container {
public:
T* element() { return element_; }
void SetElement(Element *element) { element_ = element; }
typedef void (*SetElementFunctionPointer)(Element *element);
private:
T *element_;
};
typedef Container<int> IntContainer;
上面的代码显示了一个Container模板,以及如何使用Container模板创建整数容器(IntContainer
)。在那里,我已经为SetElementFunctionPointer
声明了一个typedef。