gpt4 book ai didi

c++ - 如何在派生构造函数中初始化从基类继承的 vector

转载 作者:太空狗 更新时间:2023-10-29 21:32:07 26 4
gpt4 key购买 nike

我知道我可以像这样在派生类中初始化基类的 vector :

基础.h

#include <vector>
#include <utility>

public:
Base(std::vector<std::pair<int, int> > vec);
~Base();
private:
std::vector<std::pair<int, int> > vec_;

基础.cpp

Base::Base(std::vector<std::pair<int, int> > vec) : vec_(vec)
{
}

派生.cpp

Dervied::Derived : Base({{0, 0}, {1, 1}})
{
}

但是有没有办法在子类中初始化这个基类的 vector vec_?

基础.h

#include <vector>
#include <utility>

public:
Base();
~Base();
private:
std::vector<std::pair<int, int> > vec_;

基础.cpp

Base::Base()
{
}

所以像这样:

Derived::Derived : Base(vec_({{0, 0}, {1, 1}}))

或者这在 C++ 中根本不可能吗?

最佳答案

vec_私有(private)的。因此,它在派生类中不可访问。如果您需要在派生类中访问它,您可以将其设置为 protected

就目前的类而言,您只能通过基类构造函数修改vec_

如果修改了 vec_ 的派生类可以访问其他一些基类方法,那么您可以使用它们来更改 vec_

关于c++ - 如何在派生构造函数中初始化从基类继承的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56128858/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com