Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Builder 6.0

Автор: Fanat 18.12.2007 0:31

Можно ли перегружать 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 18.12.2007 0:39

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

Автор: Fanat 18.12.2007 0:57

Цитата(volvo @ 17.12.2007 20:39) *

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


ASCII* m_pTable1;

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

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


Автор: volvo 18.12.2007 1:01

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

Добавлено через 1 мин.
yes2.gif Что и требовалось доказать...