| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Параметризация шаблона полем структуры |
| Автор: borisbn 24.3.2011, 19:44 | ||||||||||
| Добрый день. Есть такой код на MSVC 2008
всё работает. Теперь я хочу внести EqualByField1 внутрь S
чтобы сократить область видимости этого typedef'а, и чтобы вызывающий код выглядел бы так
получаю ошибки
Есть ли какое-то решение этой проблемки, кроме наследования от S ?
Спасибо. |
| Автор: borisbn 24.3.2011, 21:28 |
блин, когда же слово "стандарт" будет соответствовать своему назначению ? неа. хочу именно внутри этой структуры (модераторы, где иконка плачащий_ребёнок_валяющийся_на_полу_и_бьющий_по_полу_ногами_и_руками.gif ? ) честно говоря, что namespace, что какая-то структура (наследованная или нет от основной) - не важно. |
| Автор: mes 24.3.2011, 21:49 | ||
может Вам в таком направлении пойти ? : http://liveworkspace.org/code/7c1443260c80e1d00dff3b3096d4c3ad |
| Автор: borisbn 24.3.2011, 23:41 | ||||||
| ну.... IMHO даже хуже, чем с наследованием (чисто эстетически) что так
что так
... хочется, чтобы именно так
и чтобы EqualByField1 был внутри S. typedef'ом или ещё как-то - всё равно. Я так понимаю, что стандартом это не запрещено, т.к. гцц это компилирует. Получается, что в студии, как водится, сделали свой "M$ Way" жалко. а оч. хотелось всё-таки засунуть это внутрь структуры... |
| Автор: mes 25.3.2011, 00:08 | ||
тогда смотрите (boost::/std:: ) bind
ну раз сильно хочется, ловите : http://liveworkspace.org/code/7fb2f6365a7b3a631bb608bf4a5392ab или опять не то ? Добавлено @ 00:09 все туда все равно не запихнете.. а запихивать внутрь структуры то, что не относится к ее реализации, очень плохой тон.. |
| Автор: borisbn 25.3.2011, 00:34 | ||||||||
Но, всё-таки, да. Не нравится. Меня с пелёнок (модераторы, где смайлик it's_just_a_joke.gif ?) учили, что описательную часть нужно располагать в h-нике, а реализацию - в cpp-шнике. В данном случае получается, что
должен быть в h-нике, а
в cpp-шнике. mes, ладно, раз уж Вы не сказали сразу: "аааа, так нужно просто сделать что-то типа"
или
или ещё что-то в этом роде, то, скорее всего, это невозможно. Во всяком случае на студии 2008. Завтра (ой... уже сегодня) попробую на 2010-й. Не получится - и пока не закрываю... |
| Автор: mes 25.3.2011, 00:53 | ||
исправляюсь : ааа, так тут же можно просто : http://liveworkspace.org/code/9d7d6661d0ed36169eab1f58e62a6322 |
| Автор: mes 25.3.2011, 01:08 |
там еще вот так должно быть можно : http://liveworkspace.org/code/820a2aa615b7eebf2b131fde112ca62a |
| Автор: borisbn 27.3.2011, 10:26 |
| хмммм, даже на билдере 5 (98-го года!!!) работает. Похоже, что это глюк именно студии. (в 2010 тож не работает) |