I keep getting an error saying that I am not using an object while calling a method, but I do not see how i this is the issue since I declare my class as a class... here is my code:

#ifndef __STACK_H
#define __STACK_H
#include <iostream>
#include <cstdlib> 

using namespace std;

class Stack{
		Stack(){top =0;}
		void clear();
		void pop(int& x);

		int pop();

		void push(int x);
		bool const isFull();
		bool const isEmpty();
		unsigned int top;
		int const static MAXSTACK = 40;
		int sValues[MAXSTACK];

void Stack::clear()
	top = 0;
int Stack::pop()
	return sValues[--top];
void Stack::pop(int& x)
	x = sValues[--top];
void Stack::push(int x)
	sValues[top++] = x;
bool const Stack::isFull()
	return top == MAXSTACK;
bool const Stack::isEmpty()
	return top == 0;
int main()
	Stack g();
	cout << g.pop();
	for(int i = 0; i < 5; i ++)
	for(int i = 0; i <5; i++)
		cout << g.pop();
	return 0;

and the error messages:
1>c:\users\thuggywuggy\2630\prog11\stack.cpp(53): error C2228: left of '.push' must have class/struct/union
1>c:\users\thuggywuggy\2630\prog11\stack.cpp(54): error C2228: left of '.pop' must have class/struct/union
1>c:\users\thuggywuggy\2630\prog11\stack.cpp(56): error C2228: left of '.push' must have class/struct/union
1>c:\users\thuggywuggy\2630\prog11\stack.cpp(58): error C2228: left of '.pop' must have class/struct/union


Recommended Answers

All 2 Replies

line 52 should be Stack g; . The reason for this is the compiler is interpreting line 52 as a function that returns a Stack and takes no arguments.

Thank you! I read a guide elsewhere that said doing so would not allow it to compile...

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, learning, and sharing knowledge.