| | |
Undefined reference errorsto function declared in header file but defined in Cpp file
Please support our C++ advertiser: Intel Parallel Studio Home
Thread Solved |
•
•
Join Date: Mar 2008
Posts: 2
Reputation:
Solved Threads: 0
Undefined reference errorsto function declared in header file but defined in Cpp file
0
#1 Mar 24th, 2008
Can one of you gurus give me some help please. I am a new programmer so please bear with me. I have a header file called Deck.h and a cpp file called Deck.cpp. In my header file, I have a class called Deck which has prototype function called createPack as one of its member functions. the createPack function is defined in Deck.cpp. I also have a file called PokerEngine.cpp which holds my main function. However, when I create an instance of class Deck and try and call the function createPack, I get undefined reference errors. I have tried using both the "." and "->" operators and I am still getting the errors. I was hoping you guys will be able to help me solve this.
Deck.h header file
Deck.cpp file
PokerEngine.cpp file
Compiler Errors
**** Build of configuration Debug for project Poker ****
**** Internal Builder is used for build ****
g++ -O0 -g3 -Wall -c -fmessage-length=0 -oPokerGameEngine.o ..\PokerGameEngine.cpp
..\PokerGameEngine.cpp: In function `int main()':
..\PokerGameEngine.cpp:21: warning: unused variable 'pl'
g++ -O0 -g3 -Wall -c -fmessage-length=0 -oDeck.o ..\Deck.cpp
..\Deck.cpp: In member function `std::vector<pack::card, std::allocator<pack::card> > Deck::createPack()':
..\Deck.cpp:48: warning: unused variable 'card_value'
g++ -oPoker.exe lottery.o PokerGameEngine.o Player.o Deck.o
PokerGameEngine.o: In function `main':
D:/C_Files_02.03.2007/MyOwnDevelopedPrograms/Poker/Debug/../PokerGameEngine.cpp:20: undefined reference to `Deck::createPack()'
collect2: ld returned 1 exit status
Build error occurred, build is stopped
Time consumed: 4250 ms.
Deck.h header file
C++ Syntax (Toggle Plain Text)
#include <iostream> #include <string> #include <vector> using namespace std; namespace pack{ struct card{ // this holds the description of the card e.g. "King Of" std::string card_name; //card type e.g. "Hearts", Spades, etc std::string card_type; /* * the value of the card e.g, 2,3 6 etc Note that Jack = 10 * Queen = 11, King = 12, Ace = 13 */ int card_value; }; } class Deck { pack::card deck; public: Deck(); ~Deck(); // returns a card pack::card getCard(); // create a card inline void createCard(string card_name, string card_type, int card_value); //retutrn a pack of cards as a vector vector <pack::card>getDeckOfcards(); //reset a card variable void resetCard(pack::card card); //create a pack of cards vector <pack::card>createPack(); };
Deck.cpp file
C++ Syntax (Toggle Plain Text)
#include "Deck.h" #include <iostream> #include <vector> using namespace std; using namespace pack; /*defines a deck with a return type of deck i.e. Note that * the return type deck is from the namespace pack which is declared and defined in * the the header file "Deck.h" */ extern pack::card deck; /*defines a getCard with a return type of deck i.e. Note that * the return type deck is from the namespace pack which is declared and defined in * the the header file "Cards.h" */ pack::card getCard(); //vector holding a deck of cards vector <pack::card>deckOfCards; // inline void Deck::createCard(string card_name, string card_type, int card_value) { deck.card_name=card_name; deck.card_type = card_type; deck.card_value= card_value; }; //return deck of cards //vector <pack::card>getDeckOfcards(); //reset a card variable //void resetCard(pack::card card); vector <pack::card>Deck::createPack(){ int type = 0; int value = 2; string card_name, card_type; int card_value; switch(type){ case 0: card_type = "Heart"; break; case 1: card_type = "Spade"; break; case 2: card_type = "Clubs"; break; case 3: card_type = "Diamond"; break; } switch(value){ case 2: card_name = "2 of "; break; case 3: card_name = "3 of "; break; case 4: card_name = "4 of "; break; case 5: card_name = "5 of "; break; case 6: card_name = "6 of "; break; case 7: card_name = "7 of "; break; case 8: card_name = "8 of "; break; case 9: card_name = "9 of "; break; case 10: card_name = "10 of "; break; case 11: card_name = "Jack of "; break; case 12: card_name = "Queen of "; break; case 13: card_name = "King of "; break; case 14: card_name = "Ace of "; break; } vector <pack::card>::iterator iter; for (;type<4;type++){ for (;value<15;value++){ deck.card_name = card_name; deck.card_type = card_type; deck.card_value = value; deckOfCards.push_back(deck); resetCard(deck); } value = 2; } return deckOfCards; } Deck::Deck() { } Deck::~Deck() { } pack::card Deck::getCard(){ return deck; } vector <pack::card> Deck::getDeckOfcards(){ return deckOfCards; } void Deck::resetCard(pack::card card){ card.card_name=""; card.card_type= ""; card.card_value = 0; }
PokerEngine.cpp file
C++ Syntax (Toggle Plain Text)
#include <string.h> #include "Player.h" #include "Deck.h" #include <iostream> using namespace std; using namespace pack; class Poker{ }; int main(){ string pl_name = "Player1"; int pl_id = 0; Deck *dk; = new Deck; dk->createPack(); Player *pl = new Player(pl_name, pl_id); dk=0; delete dk; return 0; }
Compiler Errors
**** Build of configuration Debug for project Poker ****
**** Internal Builder is used for build ****
g++ -O0 -g3 -Wall -c -fmessage-length=0 -oPokerGameEngine.o ..\PokerGameEngine.cpp
..\PokerGameEngine.cpp: In function `int main()':
..\PokerGameEngine.cpp:21: warning: unused variable 'pl'
g++ -O0 -g3 -Wall -c -fmessage-length=0 -oDeck.o ..\Deck.cpp
..\Deck.cpp: In member function `std::vector<pack::card, std::allocator<pack::card> > Deck::createPack()':
..\Deck.cpp:48: warning: unused variable 'card_value'
g++ -oPoker.exe lottery.o PokerGameEngine.o Player.o Deck.o
PokerGameEngine.o: In function `main':
D:/C_Files_02.03.2007/MyOwnDevelopedPrograms/Poker/Debug/../PokerGameEngine.cpp:20: undefined reference to `Deck::createPack()'
collect2: ld returned 1 exit status
Build error occurred, build is stopped
Time consumed: 4250 ms.
Re: Undefined reference errorsto function declared in header file but defined in Cpp
0
#2 Mar 24th, 2008
•
•
Join Date: Mar 2008
Posts: 2
Reputation:
Solved Threads: 0
Re: Undefined reference errorsto function declared in header file but defined in Cpp file
0
#3 Mar 24th, 2008
![]() |
Other Threads in the C++ Forum
- Previous Thread: strings
- Next Thread: help deleting object from multi-dimesional array
| Thread Tools | Search this Thread |
api array arrays based beginner binary bitmap c++ c/c++ calculator char char* class code coding compile compiler console conversion count data database delete deploy developer dll download dynamiccharacterarray email encryption error file forms fstream function functions game getline givemetehcodez graph gui homeworkhelp homeworkhelper iamthwee ifstream input int integer java lib linker list loop looping loops map math matrix memory multiple news node number numbertoword output parameter pointer problem program programming project proxy python random read recursion recursive reference rpg sorting string strings struct temperature template text text-file tree url variable vector video visual visualstudio win32 windows winsock word wordfrequency wxwidgets






