Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » boost::variant & boost::get

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
10.05.2006, 22:40 Uhr
mike
Pinguinhüpfer
(Operator)


Hallo

Ich spiel mich grade mit boost (brauch das notgetrungen - wollte mirs eigentlich später anschaun wenn ich die C++ Basics besser verstehe - however *g*)


C++:
typedef boost::variant<double, string> bvInput;
// ...
vector<bvInput> inputVec_;
// ...

template <typename T, typename Variant>
bool checkType(Variant& v)
{
   try
   {
      get<T>(v);
    return true;
   }
   catch(boost::bad_get&)
   {
     return false;
   }
}

// ...
void foo()
{
  if(checkType<double>(tmp))
    cout << "OK";
  else
    cout <<"NIX";
}



Gibts da ne schönere Möglichkeit zum Prüfen ob ein variant double ist? Oder geht das so in Ordnung?

Danke im Voraus
lg
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
11.05.2006, 16:16 Uhr
mike
Pinguinhüpfer
(Operator)


Achja - hab ne Zeile vergessen

C++:
typedef boost::variant<double, string> bvInput;
// ...
vector<bvInput> inputVec_;
// ...

template <typename T, typename Variant>
bool checkType(Variant& v)
{
   try
   {
      get<T>(v);
    return true;
   }
   catch(boost::bad_get&)
   {
     return false;
   }
}

// ...
void foo()
{
  bvInput tmp;
  tmp = inputVec_.back();

  if(checkType<double>(tmp))
    cout << "OK";
  else
    cout <<"NIX";
}



Geht das so in Ordnung?
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
11.05.2006, 21:38 Uhr
lich




Zitat von mike:


Gibts da ne schönere Möglichkeit zum Prüfen ob ein variant double ist?




Du kannst typeid() benutzen.


C++:

#include <typeinfo>

//num ist ein variant

bool f()
{
    if(typeid(num) == typeid(double))
        return true;
    else
        return false;
}


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
12.05.2006, 21:50 Uhr
mike
Pinguinhüpfer
(Operator)


Hmm. Mal testen - thx

lg
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: