[c++] Wlasna klasa i prywatny vektor i stos


(Sebastianp88) #1

Witam wszystkich

chciałem się spytać w jaki sposb moge zdefiniować w sekcjiprivate własny stos przy pomocy konstruktora? Próbowałem zrobić to w niniejszy sposób:

private:

     stack stos

ale jest to nie prawidłowe podejscie. Jak rozwiązać ten dylemat. Jak zdefiniuje na stałe w seksji private stack> stos wówczas wszystko jest ok, a jak uczynić to dynamicznie za pomocą konstruktora?


(etam) #2

C++ jest językiem o statycznym typowaniu. To znaczy, że typ zmiennej musi być znany podczas kompilacji, później (znaczy w trakcie wykonywania programu) nie można zmienić typu zmiennej.

Co do konstruktora i do czego służy: http://cplusplus.com/doc/tutorial/classes/ (rozdział "Constructors and destructors")

To co (wydaje mi się) może być rozwiązaniem twojego problemu, to szablony (http://cplusplus.com/doc/tutorial/templates/)

#include 

#include 

#include 


template

class Bla {

private:

    std::stack > stos;


public:

    Bla() : stos() {}

    void push(const T& t) {stos.push(t);}

    T& top() {return stos.top();}

};



int main() {

    Bla bla_int;

    bla_int.push(5);

    std::cout << bla_int.top() << std::endl;


    Bla bla_float;

    bla_float.push(3.7f);

    std::cout << bla_float.top() << std::endl;

    return 0;

}