Я просто написал упрощенную реализацию структуры данных стека в классе, но обработка целочисленного массива ведет себя так, что я не могу понять.Обработка массивов в объявлении класса
Тот же фрагмент кода, как в push()
даст поведение я ожидаю, но в этой программе, присваивающей значение в определенной позиции массива будет присвоить значение индексной переменной>
#include <iostream>
using namespace std;
class stack
{
public:
stack(int size)
{
ar_size = size - 1;
array[ar_size];
index = 0;
}
void push(int value)
{
cout << "index; " << index << endl; //will output 0
cout << "value: " << value << endl; //will output 8
array[index++] = value;
cout << "index; " << index << endl; //will output 8
cout << "value: " << value << endl; //will output 8
cout << "array: " << array[index] << endl; //will output what seems to be a memory address
}
int pop()
{
cout << "index; " << index << endl; //will output 8
return array[index--];
}
private:
int ar_size;
int array[];
int index;
};
int main()
{
stack tower(64);
tower.push(8);
int r = tower.pop();
cout << "pop: " << r << endl; //will output what seemed to be a memory address
return 0;
}
Что должно делать это утверждение: 'array [ar_size];'? У меня такое чувство, что оно не делает то, что вы думаете. –
Включить предупреждения компилятора + прочитать и понять предупреждения = ПРИБЫЛЬ! –
@ πάντα ῥεῖ Я вижу вашу точку зрения, у меня возникла ошибка, объявив размер массива в частном определении и в конечном итоге допустил эту ошибку. так, как и где я должен попытаться объявить размер массива? – maja