Друзей Я определил класс стека, который делает стек структуру, а другой класс, который использует стек (создание динамически), как показано нижеОпределение стек динамически в конструкторе класса, который является частным членом
struct A{
int a;
.....
};
class stack{
private:
int head,max;
A* data; // pointer of structure 'A'
public:
stack(int length){ // constructor to allocate specified memory
data = new A[length];
head = 0;
max = length;
}
void push(A){....} //Accepts structure 'A'
A pop(){.......} //Returns structure 'A'
};
//Another class which uses stack
class uses{
private:
stack* myData;
void fun(A); //funtion is accepts structure 'A'
..........
public:
uses(int len){
myData = new stack(len); //constructor is setting length of stack
}
};
void uses::fun(A t){
A u=t;
....done changes in u
myData.push(u); //error occurs at this line
}
Теперь Проблема заключается в том, когда я компилирую его, появляется ошибка, которая гласит: «Структура, требуемая в левой части. или. *»
Я тестирую класс стека в основном, создавая объекты структуры и вставляя их в стек и вставляя их! это означает, что мой класс стека работает нормально.
Я знаю, что эта ошибка возникает, когда мы пытаемся вызвать конструкцию без предоставления необходимых аргументов, но я даю значения, поэтому почему эта ошибка возникает.
Изменение 'стека * MyData,' 'в стек MyData, или' myData.push (и); ' to 'myData-> push (u); 'для исправления ошибки компилятора. Предпочтительно первый вариант. –
@Muhammad Zubair ALi В будущем, когда вы публикуете такие вопросы, вы можете добавить строку #, о которой компилятор жалуется, или, возможно, даже скопировать вывод компилятора дословно. –
Если я делаю это 'stack myData; 'тогда как я установлю размер стека, который настраивается в конструкторе .. Большое спасибо за ответ. –