将第二个.h / cpp文件添加到C ++有问题

时间:2016-10-25 01:12:55

标签: c++

我对C ++很新,看了几个关于如何包含第二个cpp文件的其他主题,不确定我到底做错了什么...我主要是从网格数组和枚举中得到错误,以及显然我不能使用void作为minimax.h文件?只要我单独编译,main.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;

3 个答案:

答案 0 :(得分:0)

尝试更改

#include <minimax.h>

#include "minimax.h"

<header name>用于内置标题。

您需要在Color中加入Gridminimax.h声明,或将其放在文件中的某个位置,然后将其包含在minimax.h中。您的minimax.cpp还应包含minimax.h

答案 1 :(得分:0)

您需要将GridColor的声明移至minimax.h - 否则他们将无法在minimax.cpp中看到。您还需要包含minimax.cpp中的minimax.h

此外,您应该声明返回类型&#39; void&#39;在你的函数中.h。文件。

答案 2 :(得分: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;
}