Здравствуйте, Sergey, Вы писали:
S>Раздельной компиляции шаблонов, разумеется. На практике нет — в стандарте она предусмотрена. Пока предусмотрена
Слушай, чего ты меня морочишь?
Поясни сам, от чего нельзя организовать виртуальный шаблонный метод?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
S>>Раздельной компиляции шаблонов, разумеется. На практике нет — в стандарте она предусмотрена. Пока предусмотрена E>Слушай, чего ты меня морочишь?
Мне просто твоя аргументация показалась, мягко говоря, несостоятельной. Я выразил несогласие. В чем проблема?
E>Поясни сам, от чего нельзя организовать виртуальный шаблонный метод?
Если бы хотел на эту тему поспорить, я бы сразу пояснил, а не ставил минус. Лениво мне на эту тему флеймить. Можно придумать десяток аргументов против и пару возможных реализаций
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Здравствуйте, Sergey, Вы писали:
S>Если бы хотел на эту тему поспорить, я бы сразу пояснил, а не ставил минус. Лениво мне на эту тему флеймить. Можно придумать десяток аргументов против и пару возможных реализаций
Нука-нука. Интересно бы было посмотреть на идею реализации. Только чур с сохранением принятой бизнес-практики с плагинами от третьих фирм. Чтобы ты не говорил, что плагины это де маргинальщина, я напомню тебе, что в ряде ОС прилажения являются фактически плагинами, линкуемыми системой, ещё COM-объекты бывают и т. д. и т. п.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
) ну ничего не понятно.
могу, но он будет не такой краткий
template <class containerT>
class CAncestor
{
protected:
typedef typename containerT containerType;
typename containerType m_Container;
// i need this methods(putToStream/getFromStream) for virtual operator<< and virtual operator>>virtual std::ofstream& putToStream(std::ofstream& ofbsFile) = 0;
virtual SOCKET& putToStream(SOCKET& stream) = 0;
public:
//много не относящегося к данной проблеммеbool SendToNet(SOCKET& s)
{
putToStream(s);
return true;
}
bool SaveToDisk(const tstring& tstrFileName)
{
bool Res = false;
try
{
std::ofstream ofbsFile(tstrFileName.c_str(), std::ios_base::out | std::ios_base::binary);
if (!ofbsFile.is_open())
throw (std::ios::failure("Can't open file"));
putToStream(ofbsFile);
Res = true;
}
catch(...)
{
TRACE(_T("Плохо"));
}
return Res;
}
};//CAncestor
//таких, или его наследников - несколькоtemplate <class containerT>
class CContaner : public CAncestor<containerT>
{
protected:
//вот здесь дублирование кода в каждом наследнике. хочется повторного использованияvirtual std::ofstream& putToStream(std::ofstream& stream)
{
return stream << (*this);
}
virtual SOCKET& putToStream(SOCKET& stream)
{
return stream << (*this);
}
public:
//тут то же всякая всячина template <typename streamT>
friend streamT& operator<<(streamT& stream, CThreadSafeContaner<containerT>& Self)
{
//реализация return stream;
};
};//CThreadSafeContaner end
Фактически, переводя на русский, нужен виртаульный оператор <<. Он friend по этому нельзя. Для этого используется обходной путь с виртуальным putToStream()
J>PS А что, против макросов у нас религиозное предубеждение?
1) Вобщем скорее да, чем нет
2) Коддинг стандартс И тут вобще ничего не попишешь
> S>Если бы хотел на эту тему поспорить, я бы сразу пояснил, а не ставил минус. Лениво мне на эту тему флеймить. Можно придумать десяток аргументов против и пару возможных реализаций > > Нука-нука. Интересно бы было посмотреть на идею реализации. Только чур с сохранением принятой бизнес-практики с плагинами от третьих фирм.
Естественно, без плагинов.
> Чтобы ты не говорил, что плагины это де маргинальщина, я напомню тебе, что в ряде ОС прилажения являются фактически плагинами, линкуемыми системой, ещё COM-объекты бывают и т. д. и т. п.
Тем не менее, в С++ уже сейчас полно вещей, которые с плагинами не дружат. Соответственно, новая фича, несовместимая с концепцией плагинов, тоже никому не помешает.
Posted via RSDN NNTP Server 2.1 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Здравствуйте, Sergey, Вы писали:
S>Естественно, без плагинов. S>Тем не менее, в С++ уже сейчас полно вещей, которые с плагинами не дружат. Соответственно, новая фича, несовместимая с концепцией плагинов, тоже никому не помешает.
Ну, то есть, плагины отменяем, COM забываем, и развмваем С++ дальше? А пользователи пусть что хотят, то и делают...
Оригинально...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, dip_2000, Вы писали:
_>могу, но он будет не такой краткий
... _>Фактически, переводя на русский, нужен виртаульный оператор <<. Он friend по этому нельзя. Для этого используется обходной путь с виртуальным putToStream()
Ну и реализуешь шаблонный operator << поверх этих методов + какой-то способ переключения (можно динамического) бинарный формат или текстовый.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
> S>Естественно, без плагинов. > S>Тем не менее, в С++ уже сейчас полно вещей, которые с плагинами не дружат. Соответственно, новая фича, несовместимая с концепцией плагинов, тоже никому не помешает. > > Ну, то есть, плагины отменяем, COM забываем,
Интересно, каким образом введение дополнительных возможностей в язык повлечет за собой отмену плагинов и COM?
> и развмваем С++ дальше?
Ясен пень, развиваем. Причем неплохо бы параллельно с развитием стандартизировать ABI для того, что уже есть.
> А пользователи пусть что хотят, то и делают... > Оригинально...
А это уже давно так, и чтобы убедиться в текущем положении дел относительно плагинов, достаточно посмотреть на количество вопросов в этом форуме касательно выделения/освобождения памяти в разных dll.
Posted via RSDN NNTP Server 2.1 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Здравствуйте, Sergey, Вы писали:
S>А это уже давно так, и чтобы убедиться в текущем положении дел относительно плагинов, достаточно посмотреть на количество вопросов в этом форуме касательно выделения/освобождения памяти в разных dll.
Это да, согласен. Но обращаю внимание, что это не комитета заслуга, а авторов учебной литературы. Так как авторы средств разработки предоставляют все возможности решать такие проблемы. Включая документацию...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском