I'm still inexperienced with C++. I am trying to load game entities and their xyz coordinates from a text file "1.ent" I thought it would be a good idea for a map format.

here is the MyMap.cpp:

Code:
 

#include "CEntity.h"
#include "MyMap.h"


CEntity* MyMap::GetEntity(std::string type )
{
  if( type == "player" )
    return new CPlayer(/*you can stick parameters for the constructor in here*/);
  if( type == "entity" )
    return new CEntity();
  /*if( type == "cactus" )
    return new Cactus();
    */
  // And so on, ad infinitum.
}

bool MyMap::LoadMap(char* File)
{
    FILE* FileHandle = fopen(File, "r");

    if(FileHandle == NULL) {
        return false;
    }

    fscanf(FileHandle, "%i\n", map_size);
    //read size from the first line of the file.


    obj_array = new CEntity[map_size];

    char read_type[255];
    std::string type;

    float xval;
    float yval;
    float zval;

    for (int i=0;i<=(map_size-1);i++)
    {
        //type = first string per Entity
        //xval = second string
        //yval = third string
        //zval = fourth string
        fscanf(FileHandle, "%s\n", read_type);
        fscanf(FileHandle, "%f\n", xval);
        fscanf(FileHandle, "%f\n", yval);
        fscanf(FileHandle, "%f\n", zval);
        type = read_type;

        //have a special string called "end" at the end of the map file.
        if (type != "end")
        {
            if ((obj_array[i] = GetEntity(type)) != NULL)
            {

            //by this point the constructor on the new object is already called.
            //but we won't use the constructor we will set the values directly.
            obj_array[i].X = xval;
            obj_array[i].Y = yval;
            //obj_array[i].z = zval;

            //switch this to a list specific to this map when you expand the engine.
            CEntity::EntityList.push_back(obj_array[i]);
            }
        }
        else
        break;
    }
}


void MyMap::OnCleanUp()
{
 //not sure if this part is necessary
 for (int i=0;i<=(map_size-1);i++)
 {
    if (obj_array[i] != Null)
    delete obj_array[i];
 }
 //considering I have this
  delete [] obj_array;
}
here is the text file:

Code:
3
player
400.0
40.0
0.0
player
500.0
40.0
0.0
player
600.0
0.0
0.0
end:0:0:0
When I compile I get a big error on this line:

Code:
[if ((obj_array[i] = GetEntity(type)) != NULL)]
here it is:

Code:
error: C:\Projects\2D_Engine\MyMap.cpp|54|error: no match for 'operator=' in '*(((MyMap*)this)->MyMap::obj_array + ((unsigned int)(((unsigned int)i) * 116u))) = MyMap::GetEntity(std::basic_string<char>(((const std::basic_string<char>&)((const std::basic_string<char>*)(& type)))))'|

note: C:\Projects\2D_Engine\CEntity.h|30|note: candidate is: CEntity& CEntity::operator=(const CEntity&)|
anyone know how to fix this?
thanks,