Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C++ - Operator Overload Error C4430: missing type specifier - int assumed

I compiled my code using Borland 5.5 and there was no errors that popped up. But it ll didn't run correctly so I decided to use Visual Studio 2010 to debug my program.

Visual studio is giving me this error :

Error   1   error C4430: missing type specifier - int assumed. Note: C++ does not support default-int   c:\users\johnny\documents\visual studio 2010\projects\stack_linkedlist\stack_linkedlist\classstack.cpp  111 1   STACK_LinkedList

It is pointing to my operator overload function. Here is the code to my operator overload.

//operator overload
template <class S>
const Stack<S>::operator=( const Stack& s )
{
    // Check for self assignment
    if (&s==this)
        return *this;

    // Clear the current stack
     while (s.theFront)
        {
            NodePointer p = s.theFront;

            s.theFront = s.theFront->next;
            delete p;
        }

        s.theTop = s.theFront;


    // Copy all data from stack s
    if (!s.isEmpty())
    {
        NodePointer temp = q->theFront;

        while(temp != 0)
        {
            push(temp->data);
            temp = temp->next;
        }
    }

   return *this;
}

Any help would be awesome! Thanks!

like image 380
Johnrad Avatar asked Dec 10 '22 13:12

Johnrad


2 Answers

There is no return type defined for your operator.

const Stack<S>::operator=( const Stack& s )

should be changed to :

const Stack<S>& Stack<S>::operator=( const Stack& s )
like image 146
Xavier V. Avatar answered May 29 '23 07:05

Xavier V.


Your method is missing the return type. Try this instead:

template <class S>
const Stack<S>& Stack<S>::operator=( const Stack& s )
{
   // body of method
}
like image 38
Jaime Soto Avatar answered May 29 '23 07:05

Jaime Soto