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

Ошибка в классе или так делать нельзя? - C++

Восстановить пароль Регистрация
 
edd
36 / 36 / 0
Регистрация: 13.05.2010
Сообщений: 81
05.06.2010, 00:22     Ошибка в классе или так делать нельзя? #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
 
class student { public:
                virtual void vvod (int a ,int b ,int c){pa[a][b]=c;}
                virtual int vivod (int a, int  b){return pa[a][b];}
                student (int a ,int  b);
                ~student ();
 
protected : int **pa, dd ;};
student::student (int a , int b)
{pa=new int *[a];for (int i=0; i<b; i++) pa[i]=new int [b]; dd=b; }
student::~student () {  for (int i=0; i<dd; i++) delete [] pa[i]; delete [] pa;}
 
int main(){
int x,y; cin>>x>>y;
student ddd (x,y);
ddd.vvod(2,2,100);
cout <<ddd.vivod(2,2);
cin.get();
 
    return 0;}
Вводим массив 5*2 всё нормально 2*5 зависаем конкретно???

Добавлено через 2 часа 0 минут
?????
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2010, 00:22     Ошибка в классе или так делать нельзя?
Посмотрите здесь:

C++ указатель на void в иерархии классов. можно ли так делать?
C++ Наследование или создание класса в классе?
Почему тип char не может делать вот так += C++
C++ как реализовать условие больше или равно, меньше или равно для простых дробей в классе?
C++ Почему нельзя так объявить двумерный массив?
Хочу передать в функцию несколько разнотипных массивов. Можно так делать? C++
C++ Компилятор не дает написать main без int. Ошибка в книге, или в С так можно?
C++ Почему два char нельзя сравнивать так ==?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
05.06.2010, 00:37     Ошибка в классе или так делать нельзя? #2
Цитата Сообщение от edd Посмотреть сообщение
Вводим массив 5*2 всё нормально 2*5 зависаем конкретно???
Цитата Сообщение от edd Посмотреть сообщение
cout <<ddd.vivod(2,2);
Если в массиве два ряда, у второго индекс 1.

Добавлено через 2 минуты
простите за любопытство, а с какой целью открытые функции, как virtual объявлены? И кстати
Цитата Сообщение от edd Посмотреть сообщение
virtual int vivod (int a, int b){return pa[a][b];}
лучше константной сделать
C++
1
int vivod (int a, int b) const {return pa[a][b];}
А вообще проблемы от того, что нигде нет проверки на выход за границы массива...
edd
36 / 36 / 0
Регистрация: 13.05.2010
Сообщений: 81
05.06.2010, 00:48  [ТС]     Ошибка в классе или так делать нельзя? #3
вопрос не в этом, всё равно спасибо, 2*5 это я образно написал, те же эффекты 5*10и тд
а 10*5 нормально работает, а класс только писать начал и застрял на ентом кефекте сразу же,
??????
виртуалы дальше в наследнике буду пытаться юзать)))
Yandex
Объявления
05.06.2010, 00:48     Ошибка в классе или так делать нельзя?
Ответ Создать тему
Опции темы

Текущее время: 18:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru