Using a pointer to point to a new object every frame

Started by
15 comments, last by Khatharr 11 years, 4 months ago
I'm trying to use forward declarations so I don't have a whole bunch of #includes (it can slow down compile time, it's just a practice thing for me though) .
Sounds to me like you've had enough practice on how to do it, and now you could use some practice with when it's appropariate to use it.
This is not really an appropriate place to do it, and you certainly shouldn't be deleting and newing up a new one each time. At the very least, you'd use copy-assignment.
"In order to understand recursion, you must first understand recursion."
My website dedicated to sorting algorithms
Advertisement

Ok so based on what everyone is saying I'm just making things harder for myself (which is obvious). So I will just put the all the required #includes in the Sprite.h

The only question I have is how do I know when I should use forward declartions and when is it ok to #include in a header? (I know you can do the later whenever but I have heard people say try to avoid it)

Thanks for all the replies.

I use forward declaration when it will only ever need a pointer to the object (like passing a pointer reference, or writing a container or a linked list), the core functionality is privately implemented with structure that the user never sees (thus can't include the definition), or for circular references.

Most of these apply to coding in C, where there isn't always a better way to do it, but the first one must be stressed: forward declaration is doable if you only ever need a pointer to the object. Don't decide to only use a pointer just to use forward declaration, because that's backwards. Always judge whether or not you need the full definition or not based on how the interface will be designed; don't design the interface for one or the other.

I take the view that if I only need to use pointers or references in the including header, I use a forward reference. As soon as I find myself naturally needing anything more than a pointer or reference, I include the file unless I have a very good reason not to (circular dependancy etc).

Sometimes if the first case is true except for also needing an enumeration type or something else defined in the header, I'll consider splitting the header out.

Compile time is a serious consideration for me at work as a full rebuild of our source takes about 20 minutes for me, which is a long time to be paid to twiddle my thumbs and check email. However, even bearing this in mind, I'd not compromise code design or runtime efficiency in order to improve compile time with the abuse of forward declarations.
If your SetPos function were to take _position as a const reference then as long as you keep the actual function implementation to the cpp file, then you can get away with just a forward declaration in the header file.
Oh, except that you would not be able to have m_Position as a member of that class - duh um ignore that.
"In order to understand recursion, you must first understand recursion."
My website dedicated to sorting algorithms
Actually, it's legal to declare a function that takes an object parameter by value with just a forward declaration. It's just not legal to call it or define it with only the forward declaration.
Actually, it's legal to declare a function that takes an object parameter by value with just a forward declaration. It's just not legal to call it or define it with only the forward declaration.

It was a joyous day when I figured that one out, my friend.

void hurrrrrrrr() {__asm sub [ebp+4],5;}

There are ten kinds of people in this world: those who understand binary and those who don't.

This topic is closed to new replies.

Advertisement