Перегрузка операторов

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Аватара пользователя
Balbec
Сообщения: 34
Зарегистрирован: 15 янв 2008, 20:22

Я просто не знаю как правильно включить перегруженный оператор в основную программу. если он правильноперегружен как его задействовать?
airyashov
Сообщения: 441
Зарегистрирован: 02 ноя 2007, 10:31

rect-=10
rect+=10
как обычный оператор только с твоим типом данных
Аватара пользователя
Balbec
Сообщения: 34
Зарегистрирован: 15 янв 2008, 20:22

Спасибо =) разобрался, но код Enter я не нашел. подскажите? чтобы работало например
int m=bioskey(0);
if (enter) {действие}
Аватара пользователя
Balbec
Сообщения: 34
Зарегистрирован: 15 янв 2008, 20:22

Спасибо =) разобрался, но код Enter я не нашел. подскажите? чтобы работало например
int m=bioskey(0);
if (enter) {действие}
Аватара пользователя
Balbec
Сообщения: 34
Зарегистрирован: 15 янв 2008, 20:22

Как можно переделать по другому реагирование на клавиши, чтобы были обычные коды 13, 75, 77 и т.д.
airyashov
Сообщения: 441
Зарегистрирован: 02 ноя 2007, 10:31

Balbec писал(а):Как можно переделать по другому реагирование на клавиши, чтобы были обычные коды 13, 75, 77 и т.д.
что в хелпе непонятно написано?
если младшие 8 бит не 0 значит это ASCII код, если 0, то старшие 8 бит расширенный код ASCII, т.е для расширенных кодов например 13, надо проверить значение 0x0D00,
а для Enter 0x1B00
Аватара пользователя
Balbec
Сообщения: 34
Зарегистрирован: 15 янв 2008, 20:22

Если у меня для стрелок коды 20480, 19712, 18432, 19200
то для Enter'a и левого Ctrl у меня какой код будет?
airyashov
Сообщения: 441
Зарегистрирован: 02 ноя 2007, 10:31

учитывая что работает через Int 16h
Enter=7181=0x1C0D, а нажатие Ctrl не поймает эта функция

можно в крайнем случае воспользоваться printf("%i",bioskey(0));
Аватара пользователя
Monopo
Сообщения: 125
Зарегистрирован: 06 дек 2007, 20:08
Откуда: Linux

Код: Выделить всё

class Matrix
{
        protected:
        int count; //размер
        double **mas; //коэффициенты тут
        public:
        Matrix():count(0),mas(NULL){};
        Matrix(const int& n):count(n),mas(NULL){};
        Matrix(const Matrix&){};
        ~Matrix(){};
        Matrix& operator=(const Matrix &T);
        Matrix operator+(Matrix &T); //СЛОЖЕНИЕ МАТРИЦ
};

Matrix Matrix: :o perator+(Matrix &T)
{
        Matrix temp; //РЕЗУЛЬТАТ СЛОЖЕНИЯ
        //..
        return temp;
}
В процессе создаю односвязный список матриц (Структура TMatr: Matrix* item, TMatr* next )

Код: Выделить всё

void main()
{
        TMatr *Head /*голова*/ ,*TP,*P1,*P2;
        // По ходу выполнения P1 и P2 присваиваются
        // определенные TMatr*
        TP->item=(P1->item)+(P2->item); // Ошибка e2085 Invalid pointer addition (C++ Builder 6)
}
Скажите, пожалуйста, как ошибку исправить? Я так понимаю, это из-за сложения указателей? Или нет? :confused:
Юный Падаван
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Это из-за того, что разыменовываешь указатели, которые хранят мусор. Под указатели сначала нужно память выделить, а потом уже вызывать ->.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить