Why am I getting this redefinition of class error?

162,259

Solution 1

You're defining the class in the header file, include the header file into a *.cpp file and define the class a second time because the first definition is dragged into the translation unit by the header file. But only one gameObject class definition is allowed per translation unit.

You actually don't need to define the class a second time just to implement the functions. Implement the functions like this:

#include "gameObject.h"

gameObject::gameObject(int inx, int iny)
{
    x = inx;
    y = iny;
}

int gameObject::add()
{
    return x+y;
}

etc

Solution 2

the implementation in the cpp file should be in the form

gameObject::gameObject()
    {
    x = 0;
    y = 0;
    }
gameObject::gameObject(int inx, int iny)
    {
        x = inx;
        y = iny;
    }

gameObject::~gameObject()
    {
    //
    }
int gameObject::add()
    {
        return x+y;
    }

not within a class gameObject { } definition block

Solution 3

add in header files

#pragma once

Solution 4

You should wrap the .h file like so:

#ifndef Included_NameModel_H

#define Included_NameModel_H

// Existing code goes here

#endif

Solution 5

You're defining the same class twice is why.

If your intent is to implement the methods in the CPP file then do so something like this:

gameObject::gameObject()
{
    x = 0;
    y = 0;
}
gameObject::~gameObject()
{
    //
}
int gameObject::add()
{
        return x+y;
}
Share:
162,259
Dataflashsabot
Author by

Dataflashsabot

Updated on July 10, 2022

Comments

  • Dataflashsabot
    Dataflashsabot almost 2 years

    Apologies for the code dump:

    gameObject.cpp:

    #include "gameObject.h"
    class gameObject
    {
        private:
        int x;
        int y;
        public:
        gameObject()
        {
        x = 0;
        y = 0;
        }
    
        gameObject(int inx, int iny)
        {
            x = inx;
            y = iny;
        }
    
        ~gameObject()
        {
        //
        }
        int add()
        {
            return x+y;
        }
    };
    

    gameObject.h:

    class gameObject
    {
        private:
        int x;
        int y;
        public:
        gameObject();
    
        gameObject(int inx, int iny);
        ~gameObject();
        int add();
    };
    

    Errors:

    ||=== terrac, Debug ===|
    C:\terrac\gameObject.cpp|4|error: redefinition of `class gameObject'|
    C:\terrac\gameObject.h|3|error: previous definition of `class gameObject'|
    ||=== Build finished: 2 errors, 0 warnings ===|
    

    I can't figure out what's wrong. Help?