Вопрос. MS C++ 6.0. typeof.

User avatar
wolfboy
Уже с Приветом
Posts: 1224
Joined: 24 Feb 2003 07:40

Вопрос. MS C++ 6.0. typeof.

Post by wolfboy »

не работает typeof(c), где с - объект STL (скажем, set<int>). Что делать, инклуд какой-нибудь?
Спасибо.
User avatar
tengiz
Уже с Приветом
Posts: 4468
Joined: 21 Sep 2000 09:01
Location: Sammamish, WA

Re: Вопрос. MS C++ 6.0. typeof.

Post by tengiz »

wolfboy wrote:не работает typeof(c), где с - объект STL (скажем, set<int>).

В C++ нет оператора typeof. Может, речь идёт о typeid? Если так, то typeid реально работает (отличает типы друг от друга) только для полиморфных классов с виртуальными функциями. В любых других случаях typeid вернёт информацию, относящуюся в ближайшему полиморфному родительскому классу, если таковой вообще существует.
Cheers
User avatar
OBender
Уже с Приветом
Posts: 1564
Joined: 27 Nov 2001 10:01
Location: Live free or die

Post by OBender »

Вопрос не совсем по существу.
Интересует чисто теоритически так как на С++ уже не пишу года 4.
Ввели уже в стандарт namespace templates или нет?
Интересный вы человек! Все у вас в порядке. Удивительно, с таким счастьем - и на свободе. (C) О.Бендер
User avatar
wolfboy
Уже с Приветом
Posts: 1224
Joined: 24 Feb 2003 07:40

Post by wolfboy »

Попытаюсь прояснить ситуацию, может немного по-чайниковски.
В одной работающей(!) C++ программе нашел макрос
#define FOREACH(i,c) for(typeof((c).begin()) i=(c).begin();i!=(c).end();++i)
Где с - объект STL, соответственно (c).begin() - енто итератор.
Программа на С++ , но не MS и не для Windows.

Могу, конечно, добавить параметр типа
#define FOREACH(i,c, type) (type::iterator i=(c).begin();i!=(c).end();++i))
но енто не очень красиво. Можно ли сделать красиво?
Hamster
Уже с Приветом
Posts: 11475
Joined: 20 Nov 2000 10:01
Location: Escondido, CA

Post by Hamster »

Code: Select all

#include <algorithm>
#define FOREACH(c,action) std::for_each(c.begin(), c.end(), action)


typeof это нестандартное расширение C ( не С++ )
User avatar
wolfboy
Уже с Приветом
Posts: 1224
Joined: 24 Feb 2003 07:40

Post by wolfboy »

Hamster wrote:

Code: Select all

#include <algorithm>
#define FOREACH(c,action) std::for_each(c.begin(), c.end(), action)


typeof это нестандартное расширение C ( не С++ )

Да, это вариант. А ежели без action (тогда ведь разные другие проблемки возникнут типа передачи параметров между методами)?

Return to “Вопросы и новости IT”