Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / перегрузка операторов в шаблонном классе / 5 сообщений из 5, страница 1 из 1
21.09.2006, 14:20
    #34003191
Sandro_K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перегрузка операторов в шаблонном классе
Есть шаблонный класс
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
template<typename T>
class CPixelRGB
{
public:
	CPixelRGB(): R( 0 ), G( 0 ), B( 0 ) {}
	CPixelRGB(T r, T g, T b): R(r), G(g), B(b) {}
	.......

	const CPixelRGB operator+(const CPixelRGB& pix) const
	{
		return CPixelRGB(R+pix.R, G+pix.G, B+pix.B);
	}
	const CPixelRGB operator-(const CPixelRGB& pix) const
	{
		return CPixelRGB(R-pix.R, G-pix.G, B-pix.B);
	}
        ......

	T mR; 
	T mG; 
	T mB;
};

Предполагается что параметром шаблона будут стандартные типы
CPixelRGB<unsigned char> CharPix
CPixelRGB<int> IntPix
CPixelRGB<double> DoublePix

Хочется чтобы чтобы работали все операции, например
DoublePix = IntPix+CharPix

как это можно организовать?
...
Рейтинг: 0 / 0
21.09.2006, 18:03
    #34004190
blinded
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перегрузка операторов в шаблонном классе
Тяжелый случай, ДАРАГОЙ!
Ты сначала реши какого типа будет результат
IntPix+CharPix
Причем ты реши это не на runtime, а статически иначе потерь не избежать
IntPix+CharPix+DoublePix
...
Рейтинг: 0 / 0
22.09.2006, 11:02
    #34005346
Sandro_K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перегрузка операторов в шаблонном классе
IntPix+CharPix+DoublePix
здесь результат должен быть CPixelRGB<double>

IntPix+CharPix
здесь CPixelRGB<int> IntPix

В общем результат должен быть приводиться к типу с наибольшей емкостью, как в стандартных типах C++
...
Рейтинг: 0 / 0
22.09.2006, 21:48
    #34007424
blinded
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перегрузка операторов в шаблонном классе
Заэдался? См скрепку. там не совсем корректно - по sizeof определяется тип возвращаемого значения
но ежели не пользовать float и long long и так сойдет. а ежели хоешь строго то бери TYPELIST от Александреску и вычмсляй какой тип какому предшествует...
ЗЫ голову не сломай
...
Рейтинг: 0 / 0
23.09.2006, 23:26
    #34008036
Sandro_K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перегрузка операторов в шаблонном классе
Большое спасибо, очень красивое решение :)
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / перегрузка операторов в шаблонном классе / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]