【发布时间】:2021-09-27 19:10:58
【问题描述】:
我正在寻找将派生类的向量复制到基类的向量的最简单方法,而无需逐个元素地进行。如何解决以下问题以使其正常工作?
#include <vector>
#include <iostream>
struct A {
A( int a) : a(a) {}
int a;
};
struct B : public A {
B (int a, int b) : A (a), b(b) {}
int b;
};
int main() {
std::vector<B> vb { B{1,2}, B{3,4}};
std::vector<A> va = vb;
for (const auto& item : va) {
std::cout << item.a << " ";
}
std::cout << std::endl;
return 0;
}
现在我从 g++ 收到以下错误消息
error: conversion from ‘vector<B>’ to non-scalar type ‘vector<A>’ requested
16 | std::vector<A> va = vb;
【问题讨论】: