IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Программирование (http://www.imho.ws/forumdisplay.php?f=40)
-   -   перегрузка оператора+= в С++ (http://www.imho.ws/showthread.php?t=102086)

Kvarx 09.04.2006 23:48

перегрузка оператора+= в С++
 
Собственно сабж.
Пытался искать но ничего не нашел.

В книгах по С++ Страуструпа и Шилда такой случай не рассматривается, типа по аналогии легко догадаться. Но до меня че-то не может никак дойти.

Это бинарный оператор? Как тогда передает главный объект через *this или нет? Что возращать? :idontnow: :help:

gandalf_g 10.04.2006 06:07

пример класса с перегруженным +=

Цитата:

#include <iostream>
using namespace std;

class Fraction
{
public:
Fraction(int num = 0, int den = 1)
{
this->num = num;
this->den = den;
}

Fraction& operator+=(const Fraction &rhs)
{
this->num = rhs.den * this->num +
this->den * rhs.num;
this->den = this->den * rhs.den;
return *this;
}

void print()
{
cout << num << "/" << den << endl;
}
private:
int num;
int den;
};

int main()
{
Fraction a(1,2);
Fraction c(1,1);

cout << "a is ";
a.print();
cout << endl;

cout << "c is ";
c.print();
cout << endl;

c += a;
cout << "c += a is ";
c.print();

return 0;
}

Kvarx 12.04.2006 00:19

Действительно, помогло.

Тогда еще вопрос по ходу. Написал я класс для работы с конечными поля.
Преподаватель сказал как-то давно, что плохо в основной проге
Цитата:

#include "GF2m.cpp"
так как инклуд для заголовочных файлов в основном. Как мне из класса сделать .lib .h файл?

PSyton 12.04.2006 06:23

Kvarx
Для либы.
в заголовочном файле описываешь класс
делаешь отдельный проект, в который будет входить только класс с конечными полями и все что для него нужно.
устанавливаешь в свойствах проекта что это будет не приложение, а статическая библиотека.
собираешь проект.

Для основного проекта.
#include "GF2m.h"
в параметрах линкера указываешь дополнительно свою библиотеку, собранную ранее.

Если это всего 1 небольшой класс, то смысла выносить его в либу, по моему нет. А чтобы не писать #include "GF2m.cpp", достаточно просто писать #include "GF2m.h" и при компиляции компилировать GF2m.cpp и затем при линковке указывать созданный компилятором объектник. В MSVC это делатеся путем простого добавления *.cpp файлов в проект.


Часовой пояс GMT +4, время: 03:02.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.