Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2011, 16:26   #1
peplenko
Пользователь
 
Регистрация: 03.05.2010
Сообщений: 23
По умолчанию Приведение пользовательских типов

есть 3 типа:
mymatrix
myvector
saturation

насколько я знаю, для приведения типа mymatrix к двум другим, можно объявить такие методы:
saturation();
myvector();

но оно не работает, пишет что нет возвращаемого типа (а он и не нужен же по идее).
Посмотрел эти ваши интернеты, нашёл такой вариант:
operator saturation();
operator myvector();

Для saturation работает, для myvector нет. Хоть явно, хоть неявно.
Wuts wrong?

реализация:

Код:
mymatrix::operator saturation()
{
	saturation Sum(0);
	int i,j;
	for(i=0;i<size;i++)
		for(j=0;j<vec[i]->VecSize();j++)
			Sum=Sum+(*vec[i])[j];
	return Sum;
}
mymatrix::operator myvector()
{
	myvector SumVec(size);
	SumVec=0;
	int i,j;
	for(i=0;i<size;i++)
		for(j=0;j<vec[i]->VecSize();j++)
			SumVec[i]=SumVec[i]+(*vec[i])[j];
	return SumVec;
}
peplenko вне форума Ответить с цитированием
Старый 14.04.2011, 16:43   #2
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Конструктор преобразования пишите.
Код:
mymatrix(myvector&);
mymatrix(saturation&);
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 15.04.2011, 13:13   #3
peplenko
Пользователь
 
Регистрация: 03.05.2010
Сообщений: 23
По умолчанию

Нет. Это совсем не то.
Надо не
mymatrix=saturation;
а
saturation=mymatrix;

ну и метод хотелось бы в mymatrix а не в остальных классах.
peplenko вне форума Ответить с цитированием
Старый 15.04.2011, 13:31   #4
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

В каком плане не работает? Не компилируется? Дает неправильный результат?
operator= и конструктор копирования для myvector реализованы?
Кстати, операторы преобразования стоит объявлять как const-функции.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 15.04.2011, 15:05   #5
peplenko
Пользователь
 
Регистрация: 03.05.2010
Сообщений: 23
По умолчанию

Цитата:
но оно не работает, пишет что нет возвращаемого типа (а он и не нужен же по идее).
на этапе компиляции конечно.
Да, всё это реализовано. Возможно дело в компиляторе. сейчас 05 студия, на 08 вроде работал вариант:
saturation();
myvector();
peplenko вне форума Ответить с цитированием
Старый 15.04.2011, 19:30   #6
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

какие именно ошибки выдает?
а нельзя просто перегрузить оператор присваивания?

Цитата:
saturation();
myvector();
это уже оператор скобки, а не оператор преобразования. впрочем их можно сделать и очень похожими. поправьте если я неправ.

Последний раз редактировалось onewho; 15.04.2011 в 19:39.
onewho вне форума Ответить с цитированием
Старый 18.04.2011, 12:59   #7
peplenko
Пользователь
 
Регистрация: 03.05.2010
Сообщений: 23
По умолчанию

Цитата:
Сообщение от onewho Посмотреть сообщение
какие именно ошибки выдает?
а нельзя просто перегрузить оператор присваивания?


это уже оператор скобки, а не оператор преобразования. впрочем их можно сделать и очень похожими. поправьте если я неправ.
Можно. Можно вообще просто метод создать, типа MrxToSat(). Но это не очень.
peplenko вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С - приведение типов onewho Общие вопросы C/C++ 3 21.11.2010 00:12
динамическое приведение типов в java sashonk Общие вопросы по Java, Java SE, Kotlin 13 28.08.2010 23:15
Приведение типов в Qt mike_tihomirov Qt и кроссплатформенное программирование С/С++ 1 19.06.2010 13:14
Приведение типов... В чем отличия? Gtx541 Общие вопросы C/C++ 1 16.06.2010 19:54
Приведение типов массива объектов Arnezami Общие вопросы .NET 3 17.12.2009 11:30