@shevzoom
 dev., student at MEPhI

Что не так с class Vector?

При компиляции получаю: Process finished with exit code 11
template <typename T>
class Vect
{
private:
    T *pvector;
    
    size_t size, capacity;

public:
    Vect() : pvector(NULL), size(0), capacity(0) { }
    
    ~Vect() { delete[] pvector; }

    inline void push_back(const T &elem)
    {
        capacity;
        pvector[size] = elem;
        ++size;
    }

    inline void pop_back()
    {
        T result = pvector[size - 1];
        --size;
    }

    inline bool empty() const
    {
        return size == 0;
    }

    //возврат последнего элемента
     inline const T back() const
    {
        return pvector[size - 1] ;
    }
};

class Stack based
class Stack
{
private:
    Vect<T> elems; 
...

в int main() :
int main()
{
    setlocale(LC_ALL,"ru");

    Stack<int>  is;   

    is.push(7);
    is.push(9);
    cout<<is.top()<<'\n';

Если использую библиотеку векторов, все прекрасно работает, если же создаю свой класс Vect, ничего не работает, предполагаю где-то накосячил в Vect, подскажите где именно?
  • Вопрос задан
  • 98 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
предполагаю где-то накосячил в Vect, подскажите где именно?


Накосячил вот здесь:
inline void push_back(const T &elem)
    {
        capacity;
        pvector[size] = elem;
        ++size;
    }

Ты забыл выделить память под pvector, и поэтому получил segfault.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы