Я пытаюсь создать программу на c ++ с классом, который содержит целые числа в «куче» и имеет только один метод pop (), который возвращает первый элемент в классе и удаляет его. Это мой код:
#include <iostream>
using namespace std;
class LinkList {
int *values; //pointer to integers stored in linklist
int number; // number of values stored in linklist
public:
LinkList(const int*, int); // Constructor (method declaration)
int pop(); // typically remove item from data structure (method declaration)
};
LinkList::LinkList(const int *v, int n){
number = n;
*values = *v;
int mypointer = 1;
while (mypointer<n) {
*(values+mypointer) = *(v+mypointer);
mypointer++;
}
}
int LinkList::pop() {
if (number>0) {
int returnme = *values; //get the first integer in the linklist
number--;
values++; //move values to next address
return returnme;
}
else {return -1;}
}
int main() {
int test[] = {1,2,3,4,5};
LinkList l1(test,5);
cout << l1.pop() << endl;
LinkList l2(test,5);
cout << l2.pop() << endl;
return 0;
}
Проблема заключается в том, что происходит сбой в строке * values = * v, если я удаляю 4-ю и 5-ю строки из основного метода, я больше не получаю эту проблему, так что она становится проблемой управления памятью.
Что я хочу сделать, это получить значения, указывающие на непрерывный бит памяти с целыми числами. Я пытался использовать для этого массивы, но продолжаю получать только случайные адреса памяти, возвращаемые функцией pop ()
Предыстория: нормальное программирование на Java, я использую C / C ++ только 2 месяца, я использую Eclipse IDE в Ubuntu, я могу очень просто использовать отладчик, но в настоящее время у меня нет функционирующих полос прокрутки в затмении, поэтому я не могу сделать что-то, если они не помещаются на моем экране.