2016-10-25 98 views
-2

我對C++相當陌生,看了幾個關於如何包含第二個cpp文件的其他主題,但不確定我在做什麼錯誤......我主要從網格數組和枚舉中獲取錯誤,顯然我不能使用void作爲minimax.h文件?在main.cpp中文件的其餘部分工作得很好,只要我單獨編譯給C++添加第二個.h/cpp文件的麻煩

minimax.cpp

#include <stdio.h>  /* printf, scanf, puts, NULL */ 
#include <stdlib.h>  /* srand, rand */ 
#include <time.h>  /* time */ 

void minimax(Grid& grid, Color color_player) 
{ 
    int AI_Play; 
    /* initialize random seed: */ 
    srand (time(NULL)); 

    /* generate secret number between 0 and grid size: */ 
    AI_Play = rand() % grid.size() + 0; 
    play(grid, AI_Play, color_player) 
} 

minimax.h

#ifndef MINIMAX_H_INCLUDED 
#define MINIMAX_H_INCLUDED 

minimax(Grid& grid, Color color_player) 

#endif // MINIMAX_H_INCLUDED 

的main.cpp

#include <SDL.h> 
#include <stdio.h> 
#include <array> 
#include <iostream> 
#include <minimax.h> 

using namespace std; 

//Connect Four Array 
#define COLUMN 6 
#define ROW 7 

//Screen dimension constants 
const int SCREEN_WIDTH = 364; 
const int SCREEN_HEIGHT = 312; 

enum Color {red, black, nothing}; 

typedef array<array<Color, ROW>, COLUMN> Grid; 
+1

你得到什麼樣的錯誤是什麼呢? – Jezor

+0

我相信它應該是'#include「minimax.h」'不''#include ' –

+0

對於enum和main.cpp中的數組我在後面的部分沒有在此範圍內聲明我也在minimax中得到相同的錯誤。 cpp只是嘗試了「minimax.h」,同樣的錯誤也導致關於minimax中函數的錯誤無效,以及main.cpp – Seinu

回答

0

嘗試變更

#include <minimax.h> 

#include "minimax.h" 

<header name>爲內置頭。

您需要包括內部minimax.hColorGrid聲明或把它放在一個文件,然後包括它裏面minimax.h。您的minimax.cpp還應包括minimax.h

0

您需要將GridColor的聲明移至minimax.h - 否則它們將不會在minimax.cpp中顯示。您還需要包含minimax.cpp中的minimax.h

另外,您應該在.h中的函數中聲明返回類型'void'。文件。

+0

我只是這樣做,似乎已經修復了一些錯誤,但我不知道如何聲明minimax.h中的2d數組minimax.h – Seinu

+0

minimax。h #ifndef MINIMAX_H_INCLUDED #define MINIMAX_H_INCLUDED 枚舉顏色{red,black,nothing}; typedef array ,6> Grid; void minimax(Grid&grid,Color color_player) #endif // MINIMAX_H_INCLUDED – Seinu

+0

您還需要在.h文件中包含'#include ',並根據需要移動一些其他內容。但是 - 我/我們不能讓你通過每一次失敗,所以我的建議是在這個時候關閉這個問題,因爲你的直接問題已經解決了。 – RomanK

0

minimax()不知道GridColor是什麼,因爲在定義minimax()之前您沒有定義它們。你的代碼需要看起來更像這個:

minimax.h

#ifndef MINIMAX_H_INCLUDED 
#define MINIMAX_H_INCLUDED 

#include <array> 

//Connect Four Array 
#define COLUMN 6 
#define ROW 7 

enum Color {red, black, nothing}; 

typedef std::array<std::array<Color, ROW>, COLUMN> Grid; 

void minimax(Grid& grid, Color color_player); 

#endif // MINIMAX_H_INCLUDED 

minimax.cpp

#include "minimax.h" 

#include <stdio.h>  /* printf, scanf, puts, NULL */ 
#include <stdlib.h>  /* srand, rand */ 
#include <time.h>  /* time */ 

void minimax(Grid& grid, Color color_player) 
{ 
    int AI_Play; 
    /* initialize random seed: */ 
    srand (time(NULL)); 

    /* generate secret number between 0 and grid size: */ 
    AI_Play = rand() % grid.size() + 0; 
    play(grid, AI_Play, color_player); 
} 

的main.cpp

#include <SDL.h> 
#include <stdio.h> 
#include <iostream> 

#include "minimax.h" 

//Screen dimension constants 
extern const int SCREEN_WIDTH; 
extern const int SCREEN_HEIGHT; 

// use minimax() as needed, eg... 

int main() 
{ 
    Grid grid; 
    ... 
    minimax(grid, black); 
    ... 
    return 0; 
}