Задать вопрос
@xfnxfn

Как передать массив как поле класса(см. код)?

#include <iostream>

using namespace std;
class MyWorld{
	public:
		int num[3];
		
	void arr(int n)
	{
		for (int i = 0; i < n; ++i)
		{
			num[i] = i;
		}
	}
		
	void show(int n)
	{
		int s = 0;
		for (int i = 0; i < n;++i)
		{
			s +=num[i];
		}
		cout << s;
	}
};


int main()
{
	int n = 3;
	MyWorld obj[n];
	obj[n].arr(n);
	obj[n].show(n);
	
	
}


как сделать так что бы класс для массива размер брал n а не надо было писать его в самом классе?
  • Вопрос задан
  • 144 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
Надо или использовать std::vector, или самосталятельно выделять под массив память. Тогда массив будет просто int*, выделяете его как new int[n]. Не забудьте в этом случае сделать delete[] в деструкторе.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
GavriKos
@GavriKos
Используйте нуль-терминированный массив. Где в конце будет \0. Так со строками обычно работают.
Ответ написан
Комментировать
@rPman
Если размерность массива - константа, можно использовать готовый шаблон std:array
std::array<тип или класс элемента, размер массива> myArray;

Или создай свой шаблон с походим функционалом. Параметры шаблона будут доступны как обычная переменная.

Если размер не константа, тогда передавай размер массива прямо в конструкторе
class MyWorld
{ private:
  size_t size;
  public:
  MyWorld(size_t size) {this->size=size;}
  ...
}
// использовать
MyWorld world(123);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы