форум программистов
Romeo » 07 апр 2009, 11:50
Код: Выделить всё
std::cout << (*this)[id] << std::endl;
std::cout << this->operator[](id) << std::endl;
Monopo » 06 апр 2009, 18:47
class TMas // создал абстрактный, чтобы в главной проге работать с одним указателем, а не с кучей типизированных указателей на объект { public: virtual void PrintElem(const int& id)=0; //.. }; template <class TType> class Massiv: virtual public TMas { public: //.. void PrintElem(const int& id); TType operator[](const int& id); protected: struct TT{ TType item; TT*next; }; int count; TT *Head; TT *Last; };
template <class TType> TType Massiv<TType>: :o perator[](const int& id) // Перегрузка нужна по заданию { // Нахожу нужный id-ый элемент, присваиваю его TT* Tc return Tc->item; } template <class TType> void Massiv<TType>::PrintElem(const int& id) { // Всякие проверки индекса // cout<< ?????????? - Вот здесь пытаюсь вывести этот самый X[id] перегруженного [], но не знаю, как вывести id-й элемент из this.. }
Romeo » 09 мар 2009, 19:19
" писал(а):компилятор никак не хочет съедать
Monopo » 09 мар 2009, 18:46
double& Matrix: :o perator(int x, int y)
double& Matrix: :o perator()(int x, int y)
Romeo » 07 мар 2009, 18:59
Matix m; double d1 = m(1,2); Matrix* pM = new Matrix(); double d2 = (*pM)(1, 2); delete pM;
Monopo » 06 мар 2009, 17:08
(*(P1->item)+*(P2->item)).Print();
double& Matrix: :o perator()(const int& idx,const int& idy) { if((idx>count)||(idy>count)||(idx<0)||(idy<0)) { cout<<"ERROR!! The sizes are different!!"<<endl; // введенные индексы не подходят под размер exit(1); // выход } else return mas[idx][idy]; }
Romeo » 05 мар 2009, 11:14
BBB » 05 мар 2009, 10:26
Airhand писал(а):Как верно заметил Romeo, нужно создать объекты перед их исползованием. Без этого, ты делаеш попытку складывать неинициализированные указатели, вот оно и ругается.
// По ходу выполнения P1 и P2 присваиваются // определенные TMatr*
Airhand » 04 мар 2009, 16:19
Monopo писал(а): Код: Выделить всёvoid main() { TMatr *Head /*голова*/ ,*TP,*P1,*P2; // По ходу выполнения P1 и P2 присваиваются // определенные TMatr* TP->item=(P1->item)+(P2->item); // Ошибка e2085 Invalid pointer addition (C++ Builder 6) } Скажите, пожалуйста, как ошибку исправить? Я так понимаю, это из-за сложения указателей? Или нет?
void main() { TMatr *Head /*голова*/ ,*TP,*P1,*P2; // По ходу выполнения P1 и P2 присваиваются // определенные TMatr* TP->item=(P1->item)+(P2->item); // Ошибка e2085 Invalid pointer addition (C++ Builder 6) }
BBB » 04 мар 2009, 09:48
Monopo писал(а):Код: Выделить всёvoid main() { TMatr *Head /*голова*/ ,*TP,*P1,*P2; // По ходу выполнения P1 и P2 присваиваются // определенные TMatr* TP->item=(P1->item)+(P2->item); // Ошибка e2085 Invalid pointer addition (C++ Builder 6) } Скажите, пожалуйста, как ошибку исправить? Я так понимаю, это из-за сложения указателей? Или нет?
*(TP->item) = *(P1->item) + *(P2->item);
Вернуться к началу