Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
 Аватар для dimkaok
2 / 2 / 0
Регистрация: 06.03.2013
Сообщений: 128

Как получить доступ к массиву из другого класса?

19.04.2013, 11:05. Показов 3137. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, есть такой код:

C++
1
2
3
switch(o_field.fieldArray[o_player.getPlayerPositionX()][o_player.getPlayerPositionY()]) {
    // Код   
}
Этот код находится в классе А, а массив fieldArray определен в классе В. Для индексов
массива я могу получить доступ через геттеры, а вот само имя массива подчеркивает
красным, пишет, что B::fieldArray недоступно. Как получить к нему доступ?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.04.2013, 11:05
Ответы с готовыми решениями:

Получить доступ к массиву в методе другого класса
Всем привет! Я все же еще новичок в программировании и вот возник вопрос. Есть матрица, которая создается в методе MatrixLoad класса...

Доступ к массиву другого класса
В 1 классе есть матрица. Я хочу сделать копию данной матрицы во 2й класс. Как это сдлеать правильно? 1й класс public class Graph ...

доступ к массиву из другого класса
Всем привет. Чета не пойму как сделать такое: есть класс Form1.cs(при создании), добавил новый класс newclass.cs и в нем выпоняются...

15
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
19.04.2013, 11:26
Цитата Сообщение от dimkaok Посмотреть сообщение
o_field.fieldArray[o_player.getPlayerPositionX()][o_player.getPlayerPositionY()]
сделай в классе В метод, который возвращает значение массива
1
 Аватар для dimkaok
2 / 2 / 0
Регистрация: 06.03.2013
Сообщений: 128
19.04.2013, 11:30  [ТС]
Ага, понятно. А вот еще вопрос, если есть перечисление, как к его элементам
получить доступ из другого класса?

C++
1
2
3
4
5
6
7
private:
  enum thingsOnTheField {thingsOnTheField_FOOD,
                   thingsOnTheField_ENEMY,
                   thingsOnTheField_WEAPON,
                   thingsOnTheField_HOME,
                   thingsOnTheField_NOTHING,
                   lengthOfEnum};
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
19.04.2013, 11:31
никак, так как оно(перечисление) приватное
1
 Аватар для dimkaok
2 / 2 / 0
Регистрация: 06.03.2013
Сообщений: 128
19.04.2013, 11:36  [ТС]
Цитата Сообщение от Jupiter Посмотреть сообщение
никак, так как оно(перечисление) приватное
То есть его нужно сделать protected и через наследование, либо сделать public?
И больше никак? Может, методы доступа для enum пишутся?

Добавлено через 2 минуты
А если определить константу в классе как public - это нормально?
Их-же все-равно нельзя изменять
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
19.04.2013, 11:43
Цитата Сообщение от dimkaok Посмотреть сообщение
То есть его нужно сделать protected и через наследование
это изврат
Цитата Сообщение от dimkaok Посмотреть сообщение
сделать public?
скорее всего это будет лучший вариант
Цитата Сообщение от dimkaok Посмотреть сообщение
И больше никак?
класс в котором нужно использовать перечисления перечисления можно объявить френдом в классе в котором эти перечисления объявлены
1
 Аватар для dimkaok
2 / 2 / 0
Регистрация: 06.03.2013
Сообщений: 128
19.04.2013, 11:47  [ТС]
Цитата Сообщение от Jupiter Посмотреть сообщение
То есть его нужно сделать protected и через наследование
это изврат
Слава Богу, а то я не сильно хочу так делать

А вообще нормально-ли определять константы в public?
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
19.04.2013, 11:52
Цитата Сообщение от dimkaok Посмотреть сообщение
А вообще нормально-ли определять константы в public?
если константа статическая то нормально, если у каждого объекта свое значение константы то лучше определить метод который возвращает значение константы
1
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
19.04.2013, 12:03
Цитата Сообщение от Jupiter Посмотреть сообщение
это изврат
Почему? Это же enum. Что плохого, если он должен быть виден наследникам и не виден снаружи?

Цитата Сообщение от Jupiter Посмотреть сообщение
если константа статическая то нормально, если у каждого объекта свое значение константы то лучше определить метод который возвращает значение константы
Не могли бы пояснить, чем лучше?
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
19.04.2013, 12:34
Цитата Сообщение от Tulosba Посмотреть сообщение
Почему? Это же enum. Что плохого, если он должен быть виден наследникам и не виден снаружи?
если цель создания наследника только получение доступа к enum то изврат
наследование надо применять только тогда когда оно действительно нужно.

Цитата Сообщение от Tulosba Посмотреть сообщение
Не могли бы пояснить, чем лучше?
для защиты от const_cast, для запрета взятия адреса ну и для солидарности с не константами
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
19.04.2013, 12:43
Цитата Сообщение от Jupiter Посмотреть сообщение
если цель создания наследника только получение доступа к enum то изврат
Если так, то да. Как раз подумал об этом после сабмита сообщения
Цитата Сообщение от Jupiter Посмотреть сообщение
для защиты от const_cast
Ошибка доступа же будет в рантайме.
И не понятно почему static Вы выделили особняком.
Ещё хотелось бы заметить про БОЛЬШИЕ константные объекты. Копировать при возврате - не гуд, а возвращать константную ссылку, так это тоже самое, что и сам объект открыть (за исключением возможности дополнительных действий при доступе).
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
19.04.2013, 12:59
Цитата Сообщение от Tulosba Посмотреть сообщение
Ошибка доступа же будет в рантайме.
а подробнее?

Цитата Сообщение от Tulosba Посмотреть сообщение
И не понятно почему static Вы выделили особняком.
Ещё хотелось бы заметить про БОЛЬШИЕ константные объекты. Копировать при возврате - не гуд, а возвращать константную ссылку, так это тоже самое, что и сам объект открыть (за исключением возможности дополнительных действий при доступе).
да потому что static не принадлежит объекту
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
19.04.2013, 13:02
Цитата Сообщение от Jupiter Посмотреть сообщение
а подробнее?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
 
struct A
{
    static const int i;
};
 
const int A::i = 42;
 
int main()
{
    cout << A::i << endl;
 
    int* v = const_cast<int*>( &A::i );
 
    *v = 24;
 
    cout << A::i << endl;
}
Ловлю Access Violation в VS2010 при попытке присваивания.
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
19.04.2013, 13:04
Цитата Сообщение от Tulosba Посмотреть сообщение
Ловлю Access Violation в VS2010 при попытке присваивания.
аналогично и на gcc, но я то говорил о константах объекта, а не класса
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Foo
{
public:
  const int mConst;
  Foo() : mConst(100) { }
};
 
#include <iostream>
 
int main()
{
    Foo f;
    const_cast<int&>(f.mConst) = 500;
    std::cout << f.mConst; //500
}
1
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
19.04.2013, 13:44
Цитата Сообщение от Jupiter Посмотреть сообщение
но я то говорил о константах объекта, а не класса
а чем нам поможет геттер в таком случае, если он возвращает не копию, конечно?
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
19.04.2013, 14:12
Цитата Сообщение от Tulosba Посмотреть сообщение
если он возвращает не копию, конечно?
ничем конечно не поможет, вопрос холиварный
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.04.2013, 14:12
Помогаю со студенческими работами здесь

Как получить доступ к DataGridView из другого класса
Есть форма Administrator, на ней DataGridView. Есть класс Admin_Panel, как из этого класса заполнить DataGridView который на форме...

Как получить доступ к методу из другого класса?
public partial class Form1 : Form { private void button1_Click(object sender, EventArgs e) { ...

Как получить доступ к объекту другого класса
Здравствуйте друзья. Прошу помощи по вопросу В главном viewController cоздаю объект Label и записываю в него текст ...

Как получить доступ к переменной из другого класса
namespace ViewModel { public class AFViewModel : ViewModelBase { private int _SecPauseDel = 0; public int SecPauseDel ...

Как получить доступ к CardLayout из другого класса?
Здравствуйте, в общем суть вопроса такова. Есть два класса MainClass и SubClass в MainClasss иметься CardLayout и мне надо изменить панель...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru