Добрый день. Скажите пожалуйста, если я хочу внутри метода класса B производить некоторые операции с закрытыми полями двух объектов класса A, то сделать это я могу только так?
| Код | class A { private: std::vector<int> a; public: void setVal(std::vector<int> &a); int getVal(int idx); int getSize();
}; void A::setVal(std::vector<int> &vec) { copy(vec.begin(), vec.end(), inserter(a, a.begin())); }
int A::getVal(int idx) { if(idx>=0 && idx<getSize()) return a[idx]; }
int A::getSize() { return a.size(); }
|
| Код | class B { private: std::vector<int> b; public: void getSum(A &a1, A &a2);
};
void B::getSum(A &a1, A &a2) { int sz1 = a1.getSize(); int sz2 = a2.getSize();
if(sz1 != sz2) return;
for(int i=0; i<sz1; i++) { int sum = a1.getVal(i) + a2.getVal(i); b.push_back(sum); } }
|
| Код | #include <vector> #include <iterator> #include <algorithm>
int main() { A a1, a2; std::vector<int> x1, x2;
for(int i=0; i< 10; i++) { x1.push_back(i); x2.push_back(i*i); }
a1.setVal(x1); a2.setVal(x2);
B b; b.getSum(a1, a2);
return 0; }
|
|