这是一个不合逻辑的东西,个人认为这是C++的缺陷之一,当然不同的人有不同的看法.
C++并不是像我想像中的那么完美.
#include <vector>
using std::vector;
class base{};
class derived : public base{};
void foo( vector<base*> v )
{
}
int main( int argc, char* argv )
{
vector<derived*> vd;
foo( vd );
}
1>e:\my projects\stlex1\contypetest\main.cpp(16) : error C2664: 'foo' : cannot convert parameter 1 from 'std::vector<_Ty>' to 'std::vector<_Ty>'
1> with
1> [
1> _Ty=derived *
1> ]
1> and
1> [
1> _Ty=base *
1> ]
1> No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called