虽然通过STL源(Dinkumware的,SGI,STLport的,等..),并试图让他们实现选择感(它会很好),我碰到的东西来了,我觉得挖有点奇怪或而从来没有碰到过。继承,伪多态性
通常,当一个人希望在派生类重载一个成员函数,你会在前面加上虚拟关键字基类成员函数签名,然而在STL源不是这种情况的不同点。
这是我所看到的STL实现的简化版本:
template <typename T> class A {
public:
void func() { std::cout << "inside A func()" << std::endl; }
};
template <typename T> class B : public A<T> {
public:
void func() { std::cout << "inside B func()" << std::endl; }
};
编译器似乎罚款与此伪多态性,在那里我期待沿线错误的东西作者:
error C2535: 'void B<T>::func(void)': member function already defined or declared
有人会友好地解释这里发生了什么?
PS:这也似乎没有被类模板太工作。
“问候
啊谢谢,你每天都会学到新的东西!现在你提到它确实有道理。 – rtlayzell 2012-02-11 11:55:18