Wskaznik na obiekt klasy powstalej z szablonu

0

Witam,
mam szablon:

template <typename t> class Wyjatek
{
    public:
        Wyjatek(){};
        Wyjatek(string errMsg_, unsigned int errCode_);
    string get_errMsg();
    int get_errCode();
    t * dataPtr_;
    protected:

    private:
        string errMsg_;
        unsigned int errCode_;
};

i teraz pytanie: czy mogę w innej klasie zrobić wskaźnik na obiekt klasy powstalej z szablonu wyjatku?

class foo{
wyjatek * ptr;
}

chodzi o to żeby mogł trzymać ostatnio rzucony wyjątek, oczywiscie nie wiem jaki to bedzie wyjątek, mogłbym użyć wskaznika void ale musiałbym go rzutować więc też trzymać informację o typie, dlatego wydaję mi się że może istnieje bezpieczniejszy i latwiejszy sposob

1

Albo trzymasz konkretny typ

Wyjatek<int>* ptr;

albo to będzie znowu szablon

template <typename T>
class Foo
{
    Wyjatek<T>* ptr;
};
3

Odpowiadając na szersze pytanie: do tego jest polimorfizm dynamiczny. Niech Twój wyjątek dziedziczy po klasie (abstrakcyjnej lub nie), która będzie definiowała interfejs:

class WyjatekBase
{
    public:
    virtual string get_errMsg() const=0;
    virtual int get_errCode() const=0;
};

Wtedy możesz złapać po prostu WyjatekBase const&. Przy czym bez bardzo wyraźnego powodu nie powinieneś używać klas wyjątków niedziedziczących po std::exception.

1 użytkowników online, w tym zalogowanych: 0, gości: 1