не работает typeof(c), где с - объект STL (скажем, set<int>). Что делать, инклуд какой-нибудь?
Спасибо.
Вопрос. MS C++ 6.0. typeof.
-
- Уже с Приветом
- Posts: 4468
- Joined: 21 Sep 2000 09:01
- Location: Sammamish, WA
Re: Вопрос. MS C++ 6.0. typeof.
wolfboy wrote:не работает typeof(c), где с - объект STL (скажем, set<int>).
В C++ нет оператора typeof. Может, речь идёт о typeid? Если так, то typeid реально работает (отличает типы друг от друга) только для полиморфных классов с виртуальными функциями. В любых других случаях typeid вернёт информацию, относящуюся в ближайшему полиморфному родительскому классу, если таковой вообще существует.
Cheers
-
- Уже с Приветом
- Posts: 1564
- Joined: 27 Nov 2001 10:01
- Location: Live free or die
-
- Уже с Приветом
- Posts: 1224
- Joined: 24 Feb 2003 07:40
Попытаюсь прояснить ситуацию, может немного по-чайниковски.
В одной работающей(!) 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))
но енто не очень красиво. Можно ли сделать красиво?
В одной работающей(!) 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))
но енто не очень красиво. Можно ли сделать красиво?
-
- Уже с Приветом
- Posts: 11475
- Joined: 20 Nov 2000 10:01
- Location: Escondido, CA
Code: Select all
#include <algorithm>
#define FOREACH(c,action) std::for_each(c.begin(), c.end(), action)
typeof это нестандартное расширение C ( не С++ )
-
- Уже с Приветом
- Posts: 1224
- Joined: 24 Feb 2003 07:40
Hamster wrote:Code: Select all
#include <algorithm>
#define FOREACH(c,action) std::for_each(c.begin(), c.end(), action)
typeof это нестандартное расширение C ( не С++ )
Да, это вариант. А ежели без action (тогда ведь разные другие проблемки возникнут типа передачи параметров между методами)?