В настоящее время я создаю класс, который должен быть получен из std :: vector. Я понимаю, что, вероятно, это плохо, но я должен. Теперь мой вопрос заключается в том, как вы получаете доступ к созданному вектору в функциях-членах, чтобы сделать сам класс доступным как обычный вектор целых чисел? Например, я ищу эквивалент myVector.at (0), чтобы вернуть первый член в векторе. Кроме того, размер вектора должен быть всегда 6. Вот код, который я до сих пор:Inheriting from std :: vector
class aHistogram : public vector<int>
{
public:
aHistogram(); //default constructor for histogram class
void update(int face); //Function to update histogram
void display(int maxLengthOfLine); //Displays histogram to the scale of maxLengthOfLine using x's
void clear();//Function to clear histogram bin counts
int count(int face) const; // Function to return number of times a face has appeared
private:
int numx, m, j; //Variables used in functions
};
#endif
Функция, которая требует от класса доступа сам по себе ниже, я знаю, не существует вектор называется «myVector» но то, что я потерял, является эквивалентным синтаксисом для возможности выполнить операцию.
void aHistogram::clear()
{
//Clears bin counts to 0
myVector.at(0) = 0;
myVector.at(1) = 0;
myVector.at(2) = 0;
myVector.at(3) = 0;
myVector.at(4) = 0;
myVector.at(5) = 0;
}
@ πάνταῥεῖ Это не дубликат этого вопроса. В этом вопросе рассматриваются преимущества/недостатки наследования от стандартных типов библиотек и какие типы предназначены для наследования. ОП здесь задает простой вопрос синтаксиса. – Praetorian
Используйте функции 'vector', как если бы они были определены вашим классом. Вам нужно только явно квалифицировать вызовы, если ваш класс определяет функцию-член, которая уже существует в интерфейсе 'vector', например' clear() '. В этом случае вы можете использовать 'vector :: clear();'. Например: http://coliru.stacked-crooked.com/a/d3cec10a471438eb –
Praetorian
@Praetorian Большое спасибо! Работал именно так, как мне было нужно. – Antoninus