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)
我正在尝试将元素添加到向量中的行给出了编译器错误.我怎么能解决这个问题呢?
你不能将类型元素推B*
入一个旨在获取元素的向量中A<B>
.你想达到什么目的?
如果你只想让它编译,那么(假设它B
是可复制的):
将你的向量声明为vector<B>
.
使用push_back(*B)
.请注意,事实并非如此pushback
.