依赖预兆的查找不起作用 我是C++初学者。我正在学习ADL(增强依赖查找)。 据我所知,ADL可以使用B::EnumInBase查找第(1)行带有_EnumInBase(B::EnumInBase e)的虚拟函数。 但是,gcc 4.9.2给出了错误消息:
依赖预兆的查找不起作用 我是C++初学者。我正在学习ADL(增强依赖查找)。 据我所知,ADL可以使用B::EnumInBase查找第(1)行带有_EnumInBase(B::EnumInBase e)的虚拟函数。 但是,gcc 4.9.2给出了错误消息:,c++,templates,C++,Templates,virtual\u function\u with_EnumInBase未在此作用域中声明,并且在实例化点通过依赖于参数的查找未找到任何声明 如果有人知道它无法查找函数的原因或注意到我的误解,请告诉我。 多谢各位 template<typename T> class B { public: virtual ~B() = default; enum EnumInBase { e0 = 0, e1 = 1 }; virtual void virtual_funct
virtual\u function\u with_EnumInBase
未在此作用域中声明,并且在实例化点通过依赖于参数的查找未找到任何声明
如果有人知道它无法查找函数的原因或注意到我的误解,请告诉我。
多谢各位
template<typename T>
class B {
public:
virtual ~B() = default;
enum EnumInBase { e0 = 0, e1 = 1 };
virtual void virtual_function_with_EnumInBase(EnumInBase e) {
std::cout << "B::virtual_function_with_EnumInBase(EnumInBase e)" << std::endl;
}
};
template<typename T>
class D : public B<T> {
public:
virtual ~D() = default;
void virtual_function_test(void) {
typename B<T>::EnumInBase val_for_lookup = B<T>::e0;
virtual_function_with_EnumInBase(val_for_lookup); // line (1)
}
};
void test(void) {
D<double> a;
a.virtual_function_test();
}
模板
B类{
公众:
virtual~B()=默认值;
enum EnumInBase{e0=0,e1=1};
带枚举基的虚空虚函数(枚举基e){
std::cout您需要使用_EnumInBase
和this作为调用虚拟_函数的前缀,例如,this->virtual _function _和_EnumInBase()
这取决于模板中名称查找的工作方式。有关更多详细信息,请参阅和。谢谢Maxim Egorushkin。我将阅读您推荐的网站。