Я унаследовал некоторый код, который я смотрю на расширение, но я натолкнулся на класс \ конструктор, которого я раньше не видел.Ниже показано во фрагменте кода
class A {
public:
A() {};
~A() {};
//protected:
int value_;
class B: public std::vector<A> {
public:
B(int size = 0) :
std::vector<A>(size)
{}
Итак, из того, что я понял, class B
- это вектор class A
, к которому можно получить доступ с использованием синтаксиса *this
, поскольку имя переменной отсутствует.Я хотел бы инициировать class A
в конструкторе, но я не уверен, как это сделать в этом контексте.Я посмотрел на this , но они объявили вектор как объект, где в данном случае это класс.
Кажется, это немного отличается от обычного наследования, где я унаследовал много экземпляроводин класс, по сравнению с обычным один в один в большинстве учебников.То, что я пытался сделать, это распространить значение, чтобы инициализировать class A
через конструктор class B
и class A
.Что-то похожее на приведенное ниже - это то, что я пытался, но не компилирует.
#include <iostream>
#include <vector>
using namespace std;
class A {
public:
A(int int_value) :
value_(int_value)
{};
~A() {};
//protected:
int value_;
};
class B: public vector<A> {
public:
B(int size = 0, int a_value) :
vector<A>(size, A(a_value))
{};
vector<int> new_value_;
void do_something() {
for (auto& element : *this)
new_value_.push_back(element.value_);
}
};
int main() {
cout << fixed;
cout << "!!!Begin!!!" << endl;
B b(20,23);
cout << b.size() << endl;
b.do_something();
for(auto& element : b.new_value_)
cout << element << endl;
cout << "finished" << endl;
system("PAUSE");
return 0;
}
Я думаю, что последующий вопрос заключается в том, является ли это хорошей реализацией того, что этот код пытается достичь