将元素推入矢量

the*_*ux4 -1 c++ vector

template <class T>
class A{
    //...
};

class B{
    //...
};

class C{
    protected:
    vector< A<B> > vec;
    public:
    void f(B *ptr);      
};

C::f(B *ptr){
    vec.push_back(ptr); // gives error
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试将元素添加到向量中的行给出了编译器错误.我怎么能解决这个问题呢?

Tam*_*más 6

你不能将类型元素推B*入一个旨在获取元素的向量中A<B>.你想达到什么目的?

如果你只想让它编译,那么(假设它B是可复制的):

  1. 将你的向量声明为vector<B>.

  2. 使用push_back(*B).请注意,事实并非如此pushback.