[solved]error C2061: syntax error : identifier 't3DObject'

Started by
5 comments, last by Anicho 14 years, 5 months ago
So I have the code below which is the header file for a simple .3ds loader, its giving me a very generic c++ error in the form of: error C2061: syntax error : identifier 't3DObject' error C2061: syntax error : identifier 't3DModel' error C2061: syntax error : identifier 'tMaterialInfo' usually it would be a missing symbol {,}," and so on but I cannot seem to see what's missing in this following code could someone please take a look and see if they can see something i do not. Thanks in advanced for the help :) greatly appreciated.

#ifndef _MODELLOADER_H
#define _MODELLOADER_H

#include "main.h"

//>------ Primary Chunk, at the beginning of each file
#define PRIMARY       0x4D4D

//>------ Main Chunks
#define OBJECTINFO    0x3D3D				// This gives the version of the mesh and is found right before the material and object information
#define VERSION       0x0002				// This gives the version of the .3ds file
#define EDITKEYFRAME  0xB000				// This is the header for all of the key frame info

//>------ sub defines of OBJECTINFO
#define MATERIAL	  0xAFFF				// This stored the texture info
#define OBJECT		  0x4000				// This stores the faces, vertices, etc...

//>------ sub defines of MATERIAL
#define MATNAME       0xA000				// This holds the material name
#define MATDIFFUSE    0xA020				// This holds the color of the object/material
#define MATMAP        0xA200				// This is a header for a new material
#define MATMAPFILE    0xA300				// This holds the file name of the texture

#define OBJECT_MESH   0x4100				// This lets us know that we are reading a new object

//>------ sub defines of OBJECT_MESH
#define OBJECT_VERTICES     0x4110			// The objects vertices
#define OBJECT_FACES		0x4120			// The objects faces
#define OBJECT_MATERIAL		0x4130			// This is found if the object has a material, either texture map or color
#define OBJECT_UV			0x4140			// The UV texture coordinates


// Here is our structure for our 3DS indicies (since .3DS stores 4 unsigned shorts)
struct tIndices {							

	unsigned short a, b, c, bVisible;		// This will hold point1, 2, and 3 index's into the vertex array plus a visible flag
};

// This holds the chunk info
struct tChunk
{
	unsigned short int ID;					// The chunk's ID		
	unsigned int length;					// The length of the chunk
	unsigned int bytesRead;					// The amount of bytes read within that chunk
};

// This class handles all of the loading code
class CLoad3DS
{
public:
	CLoad3DS();								// This inits the data members

	// This is the function that you call to load the 3DS
	bool Import3DS(t3DModel *pModel, char *strFileName);

private:
	// This reads in a string and saves it in the char array passed in
	int GetString(char *);

	// This reads the next chunk
	void ReadChunk(tChunk *);

	// This reads the next large chunk
	void ProcessNextChunk(t3DModel *pModel, tChunk *);

	// This reads the object chunks
	void ProcessNextObjectChunk(t3DModel *pModel, t3DObject *pObject, tChunk *);

	// This reads the material chunks
	void ProcessNextMaterialChunk(t3DModel *pModel, tChunk *);

	// This reads the RGB value for the object's color
	void ReadColorChunk(tMaterialInfo *pMaterial, tChunk *pChunk);

	// This reads the objects vertices
	void ReadVertices(t3DObject *pObject, tChunk *);

	// This reads the objects face information
	void ReadVertexIndices(t3DObject *pObject, tChunk *);

	// This reads the texture coodinates of the object
	void ReadUVCoordinates(t3DObject *pObject, tChunk *);

	// This reads in the material name assigned to the object and sets the materialID
	void ReadObjectMaterial(t3DModel *pModel, t3DObject *pObject, tChunk *pPreviousChunk);
	
	// This computes the vertex normals for the object (used for lighting)
	void ComputeNormals(t3DModel *pModel);

	// This frees memory and closes the file
	void CleanUp();
	
	// The file pointer
	FILE *m_FilePointer;
	
	// These are used through the loading process to hold the chunk information
	tChunk *m_CurrentChunk;
	tChunk *m_TempChunk;
};


#endif

[Edited by - Anicho on December 6, 2009 10:02:40 AM]
Advertisement
Does your main.h file #include the header that you posted?
that's because t3DObject, t3DModel, and tMaterialInfo are not defined in the scope of your CLoad3DS class.
Probably you're missing a header...
---Gandalf once said: "Keep it secret, Keep it safe". I say: Keep it simple, Keep it GREAThttp://www.realityshape.pt.vu
My main.h does include the header for modelloader.h, and t3DObject, t3DModel, and tMaterialInfo are defined in main.h.... i will post the code when I get back home for main.h... :) thanks
Thanks SiCrane, I just removed:

#include "modelloader.h"

and put it into my main.ccp where it was needed.

Seems like some sort of loop call to the header files was causing conflicts.
Required reading
Thanks :)

This topic is closed to new replies.

Advertisement