У меня в объекте класса хранится инициализированный массив.
Теперь нужно в отдельной функции сделать манипуляции с этим массивом, но мне его нужно передать как параметр в функцию. Как мне передать массив в функцию, если этот массив хранится в объекте?
Простой ответ, например вот так:
#include <vector>
#include <iostream>
class MyClass
{
public:
MyClass()
{
m_array = {1,2,3,4,5};
}
const std::vector<int>& get_array() const
{
return m_array;
}
private:
std::vector<int> m_array;
};
void some_global_func(const std::vector<int>& _vec)
{
for (auto& it : _vec)
std::cout << it << " ";
}
int main()
{
MyClass my;
some_global_func(my.get_array());
std::cin.get();
return 0;
}
Вам надо немного уточнить про то, какой именно массив у вас хранится. Например, в примере массив динамический (обёрнутый в std::vector), а у вас может быть статический. Передавать нужно будет через указатель, так как нет такого понятия "передать статический массив в функцию".
Так или иначе принцип тот же, вы должны объявить и определить функцию-член класса, которая предоставляет доступ к массиву (например, возвращает на него указатель/ссылку/копию), так вы не будете нарушать принципы инкапсуляции. Можно сам массив сделать public, но это плохой стиль и рано или поздно приведёт к ошибкам.
А вообще, существует такой принцип проектирования GRASP, как "информационный эксперт" (information expert), который гласит, что данные по возможности должны обрабатываться там же, где хранятся. Подумайте, правильно ли вы всё спроектировали.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей