Niezdefiniowana klasa dla szablonu klasy

Niezdefiniowana klasa dla szablonu klasy
FO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 67
0

Cześć!
Czy istnieje możliwość zapisania szablonu klasy nie określając z góry typu?
Dla:

Kopiuj
template<class TYPE>
class Klasa
{
public:
    TYPE _type;
};

Chciałbym uzyskać coś takiego:

Kopiuj
Klasa* _klasa = new Klasa<int>();

Zamiast z góry ustalać typ, czyli:

Kopiuj
Klasa<int> _klasa;

Najlepiej bez jakiś wydziwnień, czy stosowania dodatkowego typu np. klasy abstrakcyjnej.
Dla C++ oczywiście.

kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
0

auto _klasa = new Klasa<int>();, albo lepiej auto _klasa = std::make_unique<Klasa<int>>(); (lektura: https://dsp.krzaq.cc/post/176/ucze-sie-cxx-kiedy-uzywac-new-i-delete/ )

FO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 67
0

To będzie miało sens wyłącznie w określonych sytuacjach. Przykładowo dla:

Kopiuj
template<TYPE>
class Klasa
{
public:
TYPE _type;
};

class InnaKlasa
{
private:
auto _klasa;

public:
void SetKlasa(auto klasa)
{
  _klasa = klasa;
 std::cout << _klasa;
}
};

Już nie bardzo, bo nie ma initializera.

kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
0

Trzeba precyzyjniej zadawać pytania. Jak chcesz dynamicznie nadawać typ, to albo klasa bazowa, albo jakieś std::any albo std::variant. Tak czy inaczej, nagi wskaźnik z new to prawie zawsze błąd.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.