Konstruieren Sie ein variadisches std::tuple mit einem Parameterpaket von KonstruktorargumentenC++

Programme in C++. Entwicklerforum
Guest
 Konstruieren Sie ein variadisches std::tuple mit einem Parameterpaket von Konstruktorargumenten

Post by Guest »

Ich habe die folgenden Klassendefinitionen. Ich möchte ein Alphabet aus Buchstabenklassen erstellen, bei dem jede Buchstabenklasse mithilfe eines Arguments aus dem Parameterpaket erstellt wird, das an den Alphabet-Konstruktor übergeben wird.

Code: Select all

#include 

struct ArgA {};
struct ArgB {};
struct ArgC {};

struct A
{
A(ArgA& param) {}
};
struct B
{
B(ArgB& param) {}
};
struct C
{
C(ArgC& param) {}
};

template 
struct Alphabet
{
template 
Alphabet(TArgs& ...params) : _alphabet(TLetters(params...)...) {}

std::tuple _alphabet;
};

int main()
{
ArgA argA; ArgB argB; ArgC argC;

Alphabet         alphabet1(argA);              // Compiles
Alphabet      alphabet2(argA, argB);        // Doesn't compile because argA and argB are passed to A, B and C constructors
Alphabet   alphabet3(argA, argB, argC);  // Ditto!
}
Das Beispiel wird nicht kompiliert, sobald ich alphabet2 und alphabet3 hinzufüge, da argA, argB und argC ALLE an den Konstruktor jedes Objekts im TLetters-Parameterpaket übergeben werden (und nicht an das dazugehörige Argument). .
Ist das möglich? Möglicherweise eine std::integer_sequence verwenden, um rekursiv über das TArgs-Parameterpaket im Alphabet-Konstruktor zu iterieren? Mein Compiler ist nur C++11-kompatibel.
Danke!

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post