Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
lirik
2 / 2 / 0
Регистрация: 17.03.2009
Сообщений: 23
#1

Классы - C++

26.03.2009, 04:58. Просмотров 742. Ответов 10
Метки нет (Все метки)

Здравствуйте, помогите пожалуйста!
Как можно получить доступ к классу объявленному в функции ?
Например:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Boxs* playbox[15];
 
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner){
 
 for (int z = 0; z < 15; z++) {
  playbox[z] = new Boxs(z+1);
 }
 
}
 
void MyFunc () {
 playbox[0]->data = 123; //все работает читай, пиши сколько влезит.....
}
 
//
//А если например мне нужно объявить столько экземпляров класса ,
//сколько понадобиться для работы пользователю
//например:
//
 
 
 
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner){
 
 Boxs* playbox[num];
 for (int z = 0; z < num; z++) {
  playbox[z] = new Boxs(z+1);
 }
 
}
 
void MyFunc () {
 playbox[0]->data = 123; //ошибка, playbox'а нету :(
}
Помогите пожалуйста, очень нужно
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2009, 04:58     Классы
Посмотрите здесь:

Классы - C++
Помогите пожалуста решить задачу Создайте класс в соответствии с условием задачи. Определить функции-члены класса для вывода реализации...

Классы - C++
Только недавно начал разбираться с классами. Тут же появилась проблема с заданием. Реализовать класс TClass1, содержащий в качестве...

классы - C++
Не компилируется, помогите #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;vector&gt; #include &lt;map&gt; // ��������� �������� ...

Классы в С++ - C++
Подскажите пожалуйста, как решить данную задачу %-) В рамках консольного приложения создать класс А с полями а и b и свойством с....

Классы С++ - C++
пишу класс матрица проблема такая : Пусть в классе Есть функция прибавления матрицы AddMa(Alma mat); где Alma - имя класса...

Классы - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; class Animal{ public: virtual string voice() = 0; void...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kazak
3033 / 2354 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
26.03.2009, 06:24     Классы #2
Попробуй перед Boxs *playbox[num] объявить num и задать ему какое-нибудь значение.
lirik
2 / 2 / 0
Регистрация: 17.03.2009
Сообщений: 23
26.03.2009, 06:46  [ТС]     Классы #3
нет, я написал что "а что если мне нужно объявить столько экземпляров класса ,сколько понадобиться для работы пользователю" , тоесть при старте пользователю выдаеться окошко с настройками и он вводит сколько ему нужно экземпляров , с этим у меня проблем нет, это может выглядеть примерно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int num;
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner){
MyForm->ShowModal();//сдесь например присваиваеться какоето значение переменной num
MyConfig(num);
}
 
void MyConfig(num) {
 
 Boxs* playbox[num];
 for (int z = 0; z < num; z++) {
  playbox[z] = new Boxs(z+1);
 }
 
}
 
void MyFunc () {
 playbox[0]->data = 123; //ошибка Сдесь!!!
}
ошибка из-за того что класс объявлен в функции , и из другой функции к нему доступа нет, а каждый раз передавать его в параметрах невариант
kazak
3033 / 2354 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
26.03.2009, 07:02     Классы #4
А если объявить как public.
lirik
2 / 2 / 0
Регистрация: 17.03.2009
Сообщений: 23
26.03.2009, 07:42  [ТС]     Классы #5
вот вот в этом и вапрос , как из функции объявить класс как public ? прошу прощение за неправильно поставленный вопрос.
kazak
3033 / 2354 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
26.03.2009, 07:54     Классы #6
По моему так и будет public Boxs *playbox[num];
lirik
2 / 2 / 0
Регистрация: 17.03.2009
Сообщений: 23
26.03.2009, 08:01  [ТС]     Классы #7
пишет "Неопознаный символ playbox" :'(
Alexiski
Любитель давать советы
338 / 130 / 2
Регистрация: 12.01.2009
Сообщений: 511
26.03.2009, 08:14     Классы #8
Внутрь функции Вы никак не заберетесь. Надо выносить объявление наружу. Например, так:
C++
1
2
3
4
5
6
7
8
9
Box** playbox = NULL;
 
void MyConfig(num) {
 
  playbox = new Box* [num];
  for (int z = 0; z < num; z++) {
     playbox[z] = new Boxs(z+1);
  }
}
lirik
2 / 2 / 0
Регистрация: 17.03.2009
Сообщений: 23
26.03.2009, 08:27  [ТС]     Классы #9
ооо , огроменейшее спасибо вам Alexiski !
извените, я первый раз встречаю такую запись
C++
1
Box** playbox
вы не могли бы ее пояснить
Monte-Cristo
2787 / 1373 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
26.03.2009, 10:19     Классы #10
ну или делаешь так

C++
1
Box *playbox;
и в самой функции создаешь вот так

C++
1
playbox = new Box[n];
где n - кол-во объектов, ипродолжаешь везде работать учитывая n...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.03.2009, 22:43     Классы
Еще ссылки по теме:

классы - C++
здравствуйте. помогите, пожалуйста, доделать программу. #include &lt;iostream.h&gt; #include &lt;stdlib.h&gt; #include &lt;conio.h&gt; #include...

Классы - C++
Пожалуйста помогите разобраться не получается класс с указателями на функции. #include &lt;stdlib.h&gt; #include &quot;iostream&quot; using...

Классы - C++
Всем привет! Очень прошу помочь написать программу на классы, для меня это нереально сложное задание, надеюсь на вас - не оставьте в беде,...

классы с++ - C++
исправьте пожалуста: #include &lt;iostream&gt; using namespace std; class Money { private: long dollar; unsigned char cent; ...


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

Или воспользуйтесь поиском по форуму:
Alexiski
Любитель давать советы
338 / 130 / 2
Регистрация: 12.01.2009
Сообщений: 511
26.03.2009, 22:43     Классы #11
Цитата Сообщение от lirik Посмотреть сообщение
я первый раз встречаю такую запись
C++
1
Box** playbox
вы не могли бы ее пояснить
Указатель на указатель. Раньше у Вас был статический массив указателей на объекты,
теперь этот массив сам создается при помощи new
Миниатюры
Классы  
Yandex
Объявления
26.03.2009, 22:43     Классы
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru