by Guest » 07 Jan 2025, 10:26
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.
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]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);
}
[/code]
Ich kann es so zum Laufen bringen, würde aber Folgendes lieber vermeiden:
[code]#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;
}
[/code]
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.