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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.06.2018, 16:04   #11
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от 2Lui Посмотреть сообщение
Это на что похоже?
Это ни на что не похоже!
Во-первых, интерфейс с невиртуальным методом смысла не имеет, во-вторых, можете в каждом классе писать напрямую Compare метод с нужным параметром, эффект будет тем же.
waleri вне форума Ответить с цитированием
Старый 25.06.2018, 16:18   #12
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Во-первых, интерфейс с невиртуальным методом смысла не имеет
Вы не видите суслика, а он там есть... __interface, МС специфичная штука.
p51x вне форума Ответить с цитированием
Старый 25.06.2018, 17:14   #13
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Вы не видите суслика
Даже если так, единственная польза в том, что компилятор будет напоминать, что надо этот метод переопределить - толку от этого мало а вот overhead будет. Данный шаблон это попытка скрестить ежа и ужа...
waleri вне форума Ответить с цитированием
Старый 25.06.2018, 17:29   #14
2Lui
Пользователь
 
Аватар для 2Lui
 
Регистрация: 14.03.2017
Сообщений: 68
По умолчанию

Цитата:
Данный шаблон это попытка скрестить ежа и ужа...
Почему же? есть у нас допустим 2 класса например Book и Product и есть интерфейс CompareTo и то что мы в него передадим(объект класса) то и будет сравниваться. Ничего тут не скрещиваем.
Код:
template<class MyType>
__interface IComparable {
	int compareTo(MyType* obj);
};
///

//......main.cpp
Book** books = new Book*[3];
	books[0]= new Book("A1", "V1", 1991);
	books[1] = new Book("A2", "V2", 1998);
	books[2] = new Book("A3", "V3", 1990);

	Book* maxBook = (Book*)(getMaxItem((IComparable**)books,3));

	printf("Max= %s\n", maxBook->toString().data());
	//----------------------------------------
	Product** products = new Product*[4];
	products[0] = new Product("T1",11,34);
	products[1] = new Product("T2",22,12);
	products[2] = new Product("T3", 89, 84);
	products[3] = new Product("T1", 78, 120);
	Product* maxProduct = (Product*)(getMaxItem((IComparable**)products,4));
	printf("Max product= %s\n", maxProduct->toString().data());

Последний раз редактировалось 2Lui; 25.06.2018 в 17:52.
2Lui вне форума Ответить с цитированием
Старый 25.06.2018, 19:45   #15
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от 2Lui Посмотреть сообщение
Ничего тут не скрещиваем.
Если бы ничего не скрещивали, мы бы не вели этот диалог.
Вот попробуйте сделать, то что вы описали и посмотрим, что у вас получиться.
waleri вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка компиляции promer Общие вопросы Delphi 2 12.08.2016 12:38
MVS 2010 выдает ошибку и вылетает при компиляции zink Visual C++ 1 29.11.2012 23:32
Фатальная ошибка в MVS 2010. OrioshQaaaa Visual C++ 12 12.06.2012 23:56
MVS C++ 2008 (Ошибка пути к *.exe) Geg[C/c++] Общие вопросы C/C++ 10 16.09.2009 05:02
Ошибка в MVS 2008 TheWanderer Общие вопросы C/C++ 9 12.11.2008 13:21