Hej. Chciałem stworzyć swoją klasę stosu, która oferowałaby więcej funkcjonalności. Pomyślałem, żeby dziedziczyć z klasy std::stack. Mam jednak problem z wywołaniem metod dziedziczonych np. push().
class Stos : public std::stack<std::string> {
// cos tu bedzie
};
I chciałem wywołać w taki sposób:
Stos s;
s.push(1);
Error:
||=== Build: Debug in Alg_Lab12v2 (compiler: GNU GCC Compiler) ===|
C:\Users\przem\Documents\Programming\Alg_Lab12v2\main.cpp||In function 'int main()':|
C:\Users\przem\Documents\Programming\Alg_Lab12v2\main.cpp|75|error: no matching function for call to 'Stos::push(int)'|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\stl_stack.h|218|note: candidate: void std::stack<_Tp, _Sequence>::push(const value_type&) [with _Tp = std::__cxx11::basic_string<char>; _Sequence = std::deque<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char> > >; std::stack<_Tp, _Sequence>::value_type = std::__cxx11::basic_string<char>]|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\stl_stack.h|218|note: no known conversion for argument 1 from 'int' to 'const value_type& {aka const std::__cxx11::basic_string<char>&}'|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\stl_stack.h|223|note: candidate: void std::stack<_Tp, _Sequence>::push(std::stack<_Tp, _Sequence>::value_type&&) [with _Tp = std::__cxx11::basic_string<char>; _Sequence = std::deque<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char> > >; std::stack<_Tp, _Sequence>::value_type = std::__cxx11::basic_string<char>]|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\stl_stack.h|223|note: no known conversion for argument 1 from 'int' to 'std::stack<std::__cxx11::basic_string<char> >::value_type&& {aka std::__cxx11::basic_string<char>&&}'|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
Pomyślałem, żeby zrobić coś takiego, ale nie działa:
Stos s;
s.std::stack<std::string>::push(1);