Page 1 of 1

Leiten Sie den Typ der Mitgliedsvorlage aus der Klassenvorlage ab, verschiedene Typen

Posted: 07 Jan 2025, 10:26
by Guest
Ich habe die folgenden Kurse. Ich möchte „class First“ mit einer Vorlage haben und je nach Typ den Typ für „class Second“ festlegen, wie folgt.

Code: Select all

template
class Second
{
public:
T Get(T t)
{
return t;
}
};

template
class First
{
public:
// if T=double --> vector, if T=string --> long
Second second;

};

int main()
{
First first; // compile error, not in list
auto val = first.second.Get(1);

}
Ich kann es so zum Laufen bringen, würde aber Folgendes lieber vermeiden:

Code: Select all

#include 
#include 
#include 

template
class Second
{
public:
T Get(T t)
{
return t;
}
};

template
class First
{
public:
Second second;

};

int main()
{
First a;

First b;
}
Ich habe versucht, etwas mit constexpr zum Laufen zu bringen. Ich glaube, ich könnte std::conditional_t ​​verwenden, aber es sieht nicht sauber aus, da std::conditional eine Verschachtelung im Vorlagenaufruf erfordert.