【发布时间】:2018-05-29 09:55:53
【问题描述】:
请帮我解释一下为什么在这种情况下我不能直接调用 func1():
class A {
public:
void func1() {}
};
template <typename wrapped_type>
class B : public wrapped_type {
public:
void func2() {
func1();
}
};
B<A> b;
以上代码在 func1() 调用中导致“error C3861: 'func1': identifier not found”。但是如果我用以下两个选项之一替换这个调用,那么它可以编译成功:
this->func1();
或
wrapped_type::func1();
据我所知,模板类只有在确定所有类型参数后才真正编译。
【问题讨论】:
-
这是有趣的事情之一。在某处可能有一个副本。顺便说一句,我认为
this->func1();是首选。 -
感谢和抱歉重复
标签: c++ visual-c++