Jump to content

  • Log In with Google      Sign In   
  • Create Account

We're offering banner ads on our site from just $5!

1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


Using multiple header and .cpp files


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
6 replies to this topic

#1 ChainedHollow   Members   -  Reputation: 158

Like
0Likes
Like

Posted 17 December 2012 - 03:54 AM

I am confused and having trouble with using multiple header and .cpp files.
I've done a couple projects and so far I have just put everything in 1 file because I keep having trouble. This time though Id like to really figure this out so Im hoping someone here can explain it to me. Ive researched it online but its not working out and i just dont understand.

The files I have are: pong.cpp, pong.h, paddle.cpp, and paddle.h

I'm using MS Visual Studio C++ 2010 Express.
I've tried several ways of using #ifndef, #define, #endif and no combination has worked, I just keep getting an error "...already defined in Paddle.obj"

I think I get the basic idea, that if the header file has been defined already, ignore it and skip to the bottom(#endif), otherwise define it, but again no way I have done it is working. I'd love to finally learn this and get a good project created in the next couple days.
Thank you!

Sponsor:

#2 J. Evola's Apprentice   Members   -  Reputation: 307

Like
0Likes
Like

Posted 17 December 2012 - 03:59 AM


/* header.h */

#ifndef _HEADER_H_INCLUDED_

#define _HEADER_H_INCLUDED_



/* code goes here */



#endif



#3 Mussi   Crossbones+   -  Reputation: 2061

Like
1Likes
Like

Posted 17 December 2012 - 04:04 AM

Or place this at the top of your header files:
[source lang="cpp"]#pragma once[/source]

If that doesn't fix your problem, paste the complete error/errors you're getting.

Edited by Mussi, 17 December 2012 - 04:08 AM.


#4 Brother Bob   Moderators   -  Reputation: 8454

Like
3Likes
Like

Posted 17 December 2012 - 04:14 AM

Header guards, or any other mechanism to prevent a header from being included more than once, does not prevent multiple definition errors. Clicky; on page two, your error is the fourth pitfall listed.

#5 Celiasson   Members   -  Reputation: 504

Like
0Likes
Like

Posted 17 December 2012 - 04:27 AM

One problem that comes to mind is: Do you have any functions global in your files? That is, they are not a part of a specific class in the header files? Otherwise that could be a problem.

The #pragma once and #ifndef #define #endif, only makes sure that a file is included only once, but if you have several declarations of functions globally in the files you will still get definition errors.

Edited by PwFClockWise, 17 December 2012 - 04:40 AM.


#6 Olof Hedman   Crossbones+   -  Reputation: 2911

Like
1Likes
Like

Posted 17 December 2012 - 04:57 AM

My guess is you might have some definitions in your header-file by mistake. (as opposed to just declarations)
Then you easily can get multiple symbols at link, because the symbol will be defined once for each cpp-file that includes it.

Edited by Olof Hedman, 17 December 2012 - 04:57 AM.


#7 landagen   Members   -  Reputation: 376

Like
0Likes
Like

Posted 17 December 2012 - 09:23 AM

As others have said, you defined something and not just declared it. Look for an assignment of a variable ( = ) or if you have a body on a method in your header file. Both of these should not be in your header file. The only exception is when using templates, but that is for another time. If you don't know what templates are then you are not using them and you do not have to worry about it.

Edited by landagen, 17 December 2012 - 09:24 AM.







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