Hãy xem xét các lớp này.Nhận véc tơ <Derived*> vào một chức năng mong đợi một vector <Base*>
class Base
{
...
};
class Derived : public Base
{
...
};
chức năng này
void BaseFoo(std::vector<Base*>vec)
{
...
}
Và cuối cùng vector của tôi
std::vector<Derived*>derived;
Tôi muốn vượt qua derived
hoạt BaseFoo
, nhưng trình biên dịch không cho tôi. Làm cách nào để giải quyết vấn đề này mà không cần sao chép toàn bộ vectơ vào một số std::vector<Base*>
?
Tôi nghĩ bạn cần làm rõ liệu BaseFoo có dự định lấy véc-tơ bằng tham chiếu const hay không const (sẽ rất khác thường nếu nó lấy giá trị theo giá trị). Nói cách khác, BaseFoo có cần sửa đổi véc-tơ không? –