Note that there are some explanatory texts on larger screens.

plurals
  1. POC++ trying to use #ifndef and #include statements
    text
    copied!<p>Ok, so I'm a HTML/Javascript/PHP professional, but I'm trying to learn C++. I'm still a newbie at it, and I have a C++ programming project that I have errors with.</p> <p>The file that contains int main() is 'football.cpp', and I have .h and .cpp files for three classes that I have to use: Game, Team, and Date. Each instance of Team contains a vector of Games, and each Game contains a Date. Date does not contain instances of any other class.</p> <p>I am trying to find a way to use #include and #ifndef statements at the tops of the files so that I don't get errors when I compile, but I haven't found a combination that works. I am not sure if there are other bugs. Here's my current #include sections, not counting other libraries:</p> <p>football.cpp</p> <pre><code>#include "game.h" #include "team.h" #include "date.h" </code></pre> <p>team.h</p> <pre><code>#ifndef __game_h_ #define __game_h_ #endif </code></pre> <p>team.cpp</p> <pre><code>#include "team.h" #ifndef __game_h_ #define __game_h_ #endif </code></pre> <p>game.h</p> <pre><code>#ifndef __date_h_ #define __date_h_ #endif </code></pre> <p>game.cpp</p> <pre><code>#include "game.h" #ifndef __date_h_ #define __date_h_ #endif </code></pre> <p>date.cpp</p> <pre><code>#include "date.h" </code></pre> <p>I use Cygwin g++ compiler, and the line I use to compile it is:</p> <pre><code>g++ football.cpp team.cpp game.cpp date.cpp -o football.exe </code></pre> <p>Here are all the errors I get: (WARNING, WALL OF TEXT)</p> <pre><code>$ g++ football.cpp team.cpp game.cpp date.cpp -o football.exe In file included from football.cpp:9:0: game.h:15:96: error: ‘Date’ has not been declared game.h:24:1: error: ‘Date’ does not name a type game.h:37:1: error: ‘Date’ does not name a type football.cpp: In function ‘int main(int, char*)’: football.cpp:65:70: error: no matching function for call to ‘Game::Game(std::string&amp;, std::string&amp;, int [5], int [5], Date&amp;)’ game.h:15:1: note: candidates are: Game::Game(std::string, std::string, const int, const int*, int) game.h:14:1: note: Game::Game() game.h:10:12: note: Game::Game(const Game&amp;) In file included from team.cpp:4:0: team.h:24:8: error: ‘Game’ was not declared in this scope team.h:24:12: error: template argument 1 is invalid team.h:24:12: error: template argument 2 is invalid team.cpp: In member function ‘float Team::getStat3()’: team.cpp:36:26: error: request for member ‘size’ in ‘((Team*)this)-&gt;Team::games’, which is of non-class type ‘int’ team.cpp:37:21: error: invalid types ‘int[int]’ for array subscript team.cpp:37:50: error: invalid types ‘int[int]’ for array subscript team.cpp:38:21: error: invalid types ‘int[int]’ for array subscript team.cpp:38:47: error: invalid types ‘int[int]’ for array subscript team.cpp:38:76: error: invalid types ‘int[int]’ for array subscript team.cpp:38:106: error: invalid types ‘int[int]’ for array subscript team.cpp: In function ‘bool compare2(Team, Team)’: team.cpp:45:39: error: request for member ‘size’ in ‘t1.Team::games’, which is of non-class type ‘const int’ team.cpp:46:39: error: request for member ‘size’ in ‘t2.Team::games’, which is of non-class type ‘const int’ team.cpp:50:17: error: request for member ‘size’ in ‘t1.Team::games’, which is of non-class type ‘const int’ team.cpp:50:35: error: request for member ‘size’ in ‘t2.Team::games’, which is of non-class type ‘const int’ team.cpp:52:24: error: request for member ‘size’ in ‘t1.Team::games’, which is of non-class type ‘const int’ team.cpp:52:43: error: request for member ‘size’ in ‘t2.Team::games’, which is of non-class type ‘const int’ team.cpp: In function ‘bool compare3(Team, Team)’: team.cpp:62:29: error: passing ‘const Team’ as ‘this’ argument of ‘float Team::getStat3()’ discards qualifiers team.cpp:63:29: error: passing ‘const Team’ as ‘this’ argument of ‘float Team::getStat3()’ discards qualifiers In file included from game.cpp:5:0: game.h:15:96: error: ‘Date’ has not been declared game.h:24:1: error: ‘Date’ does not name a type game.h:37:1: error: ‘Date’ does not name a type game.cpp: In constructor ‘Game::Game()’: game.cpp:26:3: error: ‘date’ was not declared in this scope game.cpp:26:15: error: ‘Date’ was not declared in this scope game.cpp: At global scope: game.cpp:29:94: error: ‘Date’ has not been declared game.cpp:29:1: error: prototype for ‘Game::Game(std::string, std::string, int*, int*, int)’ does not match any in class ‘Game’ game.h:10:12: error: candidates are: Game::Game(const Game&amp;) game.h:15:1: error: Game::Game(std::string, std::string, const int*, const int*, int) game.cpp:13:1: error: Game::Game() game.cpp: In member function ‘int Game::getVisitingScore(int) const’: game.cpp:80:10: error: ‘visitingScores’ was not declared in this scope game.cpp: At global scope: game.cpp:94:1: error: ‘Date’ does not name a type </code></pre> <p><br /> Will edit if further clarification is needed, although I don't think it will be.</p> <p>Any help would be vastly appreciated.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload