Getting error C2819. Need some help.

Started by
1 comment, last by Ashaira 12 years ago
Well ive been working on a small game engine in OpenGL ES 2.0 and until today everything was fine. Today i decided to put my Scene Manager and Resource Manager clases as extern in a globals.h and declare them in the init in the main.cpp. After doing so i keep getting error C2819 for variable that until recently worked fine.

For example in the Scene Manager i have a pointer that holds all the objects declared as such
CGameObject * GameObjects;

And then use it in the cpp in various places. one example where i get the error is here
if(GameObjects->shader == j+1)

as far as i understand this error can appear when using the -> operator on non pointer types but GameObjects is a pointer.

Could anyone help me?

If posting the whole files will help you understand better let me know.

EDIT: upon further investigation the cause seems to be the use of STL. i used STL to read from files and now since i turned the SM and RM into global extern it seem STL is overwriting some pointer operators. Could someone tell me how to block this overwrite? ide like to keep using the file reading i implemented if possible if not could someone point me towards some file reading that doesnt use the STL? all the examples i have found so far use STL.
Advertisement
I doubt this is STL problem. Perhaps I'm wrong, but it seems to me that accessing GameObjects gives you a GameObject instance that is not a pointer. So this should be correct instead:

if(GameObjects.shader == j+1) ...

In short, GameObjects is a pointer in your code, but GameObjects is not:

CGameObject * GameObjects; // Pointer to GameObject instances
// ...
// Initialize GameObjects etc
// ...
GameObject& go=GameObjects; // go is reference to GameObject, not a pointer

This would give you a pointer at i:

CGameObject ** GameObjects; // Pointer to pointers of GameObject instances
// ...
// Initialize GameObjects etc
// ...
GameObject* go=GameObjects; // go is pointer to GameObject


Note: all the above is assuming that CGameObject is a class, not a pointer type.
GameObjects is a pointer, GameObjects is not a pointer.
[size="1"]I don't suffer from insanity, I'm enjoying every minute of it.
The voices in my head may not be real, but they have some good ideas!
Oh thnx. i looked at it again ur right.
GameObjects
Was initialy an array of pointers so my refrence lvl was off. stupid me. thnx.

This topic is closed to new replies.

Advertisement