Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> указатель на класс 
:(
    Опции темы
azer88
Дата 8.10.2011, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 18.11.2007

Репутация: нет
Всего: нет



First code
Код

#include <iostream>
using namespace std;

class BaseNode
{
public:
    int a,b;
    int sum(int,int);
};
int main()
{
    int i;
    BaseNode* a;
    a=new BaseNode[5];
    for(i=0;i<5;i++)
    {
        a[i].a=i;
    }
    for(i=0;i<5;i++)
    {
        cout<<a[i].a<<endl;
    }

    system("pause");
    return 0;
}


Second version

Код

#include <iostream>
using namespace std;

class BaseNode
{
public:
    int a,b;
    int sum(int,int);
};
int main()
{
    int i;
    BaseNode** a;
    a=new BaseNode*[5];
    for(i=0;i<5;i++)
    {
        a[i]->a=i;
    }
    for(i=0;i<5;i++)
    {
        cout<<a[i]->a<<endl;
    }

    system("pause");
    return 0;
}



1)хочу понять почему первый год работает a второй не работает. мне нужно создать массив  pointer-ов. 
2) как я могу изменить второй код чтобы
результат был бы точно как в первый
PM MAIL   Вверх
mes
Дата 8.10.2011, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



во втором примере Вы не создаете объектов типа BaseNode, а только указатели на него.. 
поможет внимательное чтение глав про указатели и динамические массивы..



--------------------
PM MAIL WWW   Вверх
azer88
Дата 8.10.2011, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 18.11.2007

Репутация: нет
Всего: нет



спасибо за ответ
мне очень нужен ответ на второй вопрос
2) как я могу изменить второй код чтобы результат был бы точно как в первом случае
PM MAIL   Вверх
newbee
Дата 8.10.2011, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: 4
Всего: 19



Код

    for(i=0;i<5;i++)
    {
        a[i]=new BaseNode;
        a[i]->a=i;
    }


Добавлено через 5 минут и 14 секунд
mes, по-моему ты перемудрил ))


--------------------
You're face to face
With man who sold the world
PM   Вверх
azer88
Дата 8.10.2011, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 18.11.2007

Репутация: нет
Всего: нет



спасибо newbee, вот это то что мне нужно
PM MAIL   Вверх
math64
Дата 8.10.2011, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 8
Всего: 72



На самом деле оба варианта не правильна - но ошибки в первом не сказываются на работе.
В конце нужно удалить, то что было создано.
Код

for(int i=0; i<5; i++)
  delete a[i];
delete[] a;

PM   Вверх
Modul
Дата 8.10.2011, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 238
Регистрация: 17.2.2006

Репутация: нет
Всего: нет



Такое чувство, что писали все не кривой ручкой, а кривой ножкой.

Давайте уже допишите все сразу, раз все умные.  smile 


newbee
как может величайший намудрить ?!!  smile 


Да и весь код - х...я. А где инкапсуляция данных - грубейшее нарушение (доступ к переменной а).


Это сообщение отредактировал(а) Modul - 8.10.2011, 19:18
--------------------
I'll be back !
PM MAIL   Вверх
newbee
Дата 9.10.2011, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: 4
Всего: 19



Цитата(math64 @  8.10.2011,  18:15 Найти цитируемый пост)
На самом деле оба варианта не правильна - но ошибки в первом не сказываются на работе
Что за ошибки то, в упор не вижу?

Цитата(Modul @  8.10.2011,  20:12 Найти цитируемый пост)
как может величайший намудрить ?!!
Передо мной был перемудреный вариант mes-а, но его потом почему-то удалили.

Цитата(Modul @  8.10.2011,  20:12 Найти цитируемый пост)
Да и весь код - х...я. А где инкапсуляция данных - грубейшее нарушение (доступ к переменной а)
ООП ГМ



--------------------
You're face to face
With man who sold the world
PM   Вверх
math64
Дата 9.10.2011, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 8
Всего: 72



Цитата(newbee @  9.10.2011,  14:24 Найти цитируемый пост)
Что за ошибки то, в упор не вижу?

Да та же -  нет delete[]
PM   Вверх
newbee
Дата 9.10.2011, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: 4
Всего: 19



Цитата(math64 @  9.10.2011,  15:28 Найти цитируемый пост)
Да та же -  нет delete[] 
Подумаешь, утечка памяти, это не ошибка, которая могла бы сказаться на выполнении программы.


--------------------
You're face to face
With man who sold the world
PM   Вверх
mes
Дата 9.10.2011, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(newbee @  9.10.2011,  13:24 Найти цитируемый пост)

Передо мной был перемудреный вариант mes-а, но его потом почему-то удалили.

удалил, потому что тс все равно вряд ли бы понял к чему я привел такой пример..
тем более, что даже более опытные товарищи не поняли, несмотря на выделенное в цитате smile

Добавлено через 6 минут и 23 секунды
возвращаю тот пост :

Цитата(azer88 @  8.10.2011,  08:45 Найти цитируемый пост)
как я могу изменить второй код чтобы
результат был бы точно как в первый 


Код

 BaseNode** a;
    a=new BaseNode*[1];
    *a=new BaseNode[5];
    
    for(i=0;i<5;i++)
    {
        a[0][i].a=i;
    }
    for(i=0;i<5;i++)
    {
        cout<<a[0][i].a<<endl;
    }






--------------------
PM MAIL WWW   Вверх
volatile
Дата 9.10.2011, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



Цитата(newbee @  9.10.2011,  14:24 Найти цитируемый пост)
ООП ГМ

Что такое ГМ?

честно поискал в гугле, варианты:
  • ГМ — советская/российская аббревиатура, сокращение слов Гусеничная машина. 
  • ГМ-94 — Гранатомет  ГМ-94 представляет собой магазинное оружие с...
  • ГМ — Горелки газомазутные ГМ и ГМП-16 | В подборе мазутных горелок типа ГМ-10, ГМ-2,5 или любых других ...
  • гм — Междометие; неизменяемое. Синонимы хм

Добавлено через 1 минуту и 6 секунд
 smile 
PM MAIL   Вверх
newbee
Дата 9.10.2011, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: 4
Всего: 19



mes, а что, наши варианты выдают разные результаты?

volatile, головного мозга. ООП ГМ - это такая болезнь, свойственная начинающим читателям Design Pattern и прочим энтерпрайз-быдлокодерам.


--------------------
You're face to face
With man who sold the world
PM   Вверх
mes
Дата 9.10.2011, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(newbee @  9.10.2011,  19:04 Найти цитируемый пост)
а что, наши варианты выдают разные результаты?

воспринимать надо в контексте, т.е. с учетом 
Цитата(mes @  8.10.2011,  08:54 Найти цитируемый пост)
поможет внимательное чтение глав про указатели и динамические массивы..

и с нежеланием тс прислушиваться к этому.. именно поэтому был написан код насколько это возможно в стиле первого  smile 





--------------------
PM MAIL WWW   Вверх
Modul
Дата 10.10.2011, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 238
Регистрация: 17.2.2006

Репутация: нет
Всего: нет



newbee

Пожалуйста напишите полностью Ваш вариант кода, чтобы мы
могли закрыть эту тему.
--------------------
I'll be back !
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0566 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.