Ich habe meinen Kopf schon seit geraumer Zeit wurde hämmern jetzt ein Array/Vektor zu erstellen versuchen, die Verweise auf verschiedene Arten von Variablen finden Sie im Beispiel enthalten:Gibt es eine Möglichkeit, ein Array/Vektor zu erstellen, das Verweise auf verschiedene Arten von Variablen enthält?
class Validate
{
private:
some_array/vector[]; //0 would refer to x, 1 to y, and so on..
uint8_t x;
uint16_t y;
int32_t z;
public:
Validate();
void doSomething(uint8_t &member);
void doSomething(uint16_t &member);
void doSomething(int32_t &member);
}
Der springende Punkt ist, so dass ich kann mit diesem Array/Vektor leicht in einem „for-Schleife“, so etwas wie:
void Validate::doSomething(uint_8 &member)
{
//Do whatever with the variable refered to.
}
Validate::Validate()
{
for(int i = 0 ; i < 2 ; i++)
doSomething(some_array/vector[i]);
}
Vielleicht eine jemand hat Antwort oder vielleicht eine bessere Lösung für mich.
Sie können versuchen, für Ihre Zwecke boost :: Variante zu verwenden. –
Vektoren sind homogen, sie können nur eine Art von Wert enthalten. Sie könnten einige hässliche Polymorphie-Tricks machen, um das zu tun, was Sie versuchen, aber die bessere Antwort ist, dass Sie nach einem std :: tuple suchen. Wenn Sie in der Lage sein möchten, über den Container zu iterieren, müssen Sie einige boost :: fusion oder boost :: hana - esque Metafunktionen verwenden. Das alles nimmt an, dass Sie die Typen zur Kompilierungszeit bestimmen können. – RyanP
Ich bin kein Experte, aber das erste, was mir in den Sinn kam, ist ein "void void" zu erschaffen. Ich weiß nicht, wie gut dieses Design ist, aber vielleicht kann das den Trick machen. – PRP