Jump to content

  • Log In with Google      Sign In   
  • Create Account

Interested in a FREE copy of HTML5 game maker Construct 2?

We'll be giving away three Personal Edition licences in next Tuesday's GDNet Direct email newsletter!

Sign up from the right-hand sidebar on our homepage and read Tuesday's newsletter for details!


We're also offering banner ads on our site from just $5! 1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


Getting error C2819. Need some help.


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
2 replies to this topic

#1 Ashaira   Members   -  Reputation: 105

Like
-1Likes
Like

Posted 04 April 2012 - 05:28 AM

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[i]->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.

Sponsor:

#2 mrjones   Members   -  Reputation: 612

Like
2Likes
Like

Posted 04 April 2012 - 06:29 AM

I doubt this is STL problem. Perhaps I'm wrong, but it seems to me that accessing GameObjects[i] gives you a GameObject instance that is not a pointer. So this should be correct instead:
if(GameObjects[i].shader == j+1) ...
In short, GameObjects is a pointer in your code, but GameObjects[i] is not:
CGameObject * GameObjects;	  // Pointer to GameObject instances
// ...
// Initialize GameObjects etc
// ...
GameObject& go=GameObjects[i]; // 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[i]; // go is pointer to GameObject

Note: all the above is assuming that CGameObject is a class, not a pointer type.

#3 Ashaira   Members   -  Reputation: 105

Like
0Likes
Like

Posted 04 April 2012 - 07:11 AM

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.




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS