Помощь - Поиск - Пользователи - Календарь
Полная версия: Builder 6.0
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
Fanat
Можно ли перегружать operator+ так

class ASCII
{
public:
char* Array;
int n;
public:
ASCII(TStringGrid *Grid);
ASCII VivodvSG(TStringGrid *Grid);
...
ASCII operator+(char t); // Добавление
...
};



В смысле что ASCII operator+(char t) зависит не от ASCII?
Если да...то почему при вызове

char t = '2';
if (mrOk == Form2->ShowModal())
{
m_pTable1 = m_pTable1 + t; //*(Form2->Edit1->Text.c_str());
}
m_pTable1->VivodvSG(SG2);



Не происходит обращение к данной перегруженной функции?..
(условие if выполняется).
volvo
Ты бы привел описания типов всех переменных, участвовавших в приведенном тобой выражении, тоже. Перегрузка операций - дело такое, что любая мелочь может иметь решающее значение... К примеру, m_pTable1 какой тип имеет?
Fanat
Цитата(volvo @ 17.12.2007 20:39) *

Ты бы привел описания типов всех переменных, участвовавших в приведенном тобой выражении, тоже. Перегрузка операций - дело такое, что любая мелочь может иметь решающее значение... К примеру, m_pTable1 какой тип имеет?


ASCII* m_pTable1;

Вроде и все переменные...

Вот так работает.
*m_pTable1 = *m_pTable1 + t;

volvo
Сорри, но ты перегрузил operator + внутри класса ASCII, следовательно левым операндом обязан быть не указатель, а собственно экземпляр типа ASCII...

Добавлено через 1 мин.
yes2.gif Что и требовалось доказать...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.