У меня в объекте класса хранится инициализированный массив.
Теперь нужно в отдельной функции сделать манипуляции с этим массивом, но мне его нужно передать как параметр в функцию. Как мне передать массив в функцию, если этот массив хранится в объекте?
Простой ответ, например вот так:
#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), который гласит, что данные по возможности должны обрабатываться там же, где хранятся. Подумайте, правильно ли вы всё спроектировали.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Нужно найти все натуральные числа, не делящиеся ни на один из квадратов простых чисел и не превышающие число N (1 <= N <= 10^9)
Добрый день! Создаю стандартные оси OX, OYВсе замечательно, но нулевая точка обозначается по каждой из осей, причем текст пересекается самой...
Начну с того, что у меня есть функционал для блогаВ нем есть article'ы