VTK hat typedefs für Basistypen (float, int, double usw.) und weist eine Zahl pro Typ zu. Sie sind here angegeben. Die Funktion GetDataType()
, zum Beispiel vtkDataArray
, gibt eine Ganzzahl zurück, die einem der Typen entspricht. Ich möchte diese Ganzzahl mit den grundlegenden Datentypen (float, int, double) vergleichen.Vergleichen von VTK-Datentypen und Basisdatentypen
Gibt es eine Möglichkeit, dies einfach zu tun?
Die Verwendung, die ich davon habe, ist eine Vorlagenklasse, deren Parameter T ein Skalar ist. Ich möchte, wenn der skalare Punktdaten eines Datensatzes zu überprüfen, den gleichen Datentyp wie T.
Vorerst hat, was ich tue, ist eine Art Größenvergleich:
vtkDataArray *scalars = image->GetPointData()->GetScalars();
if(scalars->GetDataTypeSize() != sizeof(T))
{
std::cerr<<"Incompatible types"<<std::endl;
}
Aber offensichtlich float
und int
sind beide der Größe 4, so dass es nicht wirklich funktioniert.
Irgendwelche Ideen?
können Sie type_index verwenden, ich bereite ein Beispiel vor ... – norisknofun