у меня есть что-то вроде следующего:Итерация через базовый класс члена
#include <vector>
#include <iostream>
template<typename T>
class Vector {
private:
std::vector<T> base;
public:
Vector(const std::vector<T> vec) {base = vec;}
T& operator[](const int& index) {return base[index];}
std::vector<T> getBase() const {return base;}
};
class BigNum : public Vector<int>
{
public:
BigNum(const std::vector<int> init) : Vector(init) {}
};
int main()
{
int arr[] = {6,3,7,6,2};
std::vector<int> v(arr, arr + sizeof(arr)/sizeof(arr[0]));
BigNum num(v);
for(auto it = num.getBase().begin(); it != num.getBase().end(); ++it)
{
std::cout << *it << " "; // What's going on here??
}
std::cout << "\n";
for(int i = 0; i < 5; ++i)
{
std::cout << num.getBase()[i] << " ";
}
std::cout << "\n";
}
Выход этих двух петель:
30134336 0 7 6 2
6 3 7 6 2
Что здесь происходит? Первое число в первом цикле (30134336) изменяется каждый раз, но остальные числа одинаковы. Заранее спасибо!
Почему все ваши аргументы отмечены 'const' несмотря на то, передается по значению? Вы пытаетесь обеспечить, чтобы код был настолько неэффективным, насколько это возможно? :) – Praetorian