0

我正在尝试使用 play() 函数设置一个新类。我不确定我做错了什么,因为我有其他以类似方式实现的类,它们工作正常。有人可以指出我可能在哪里犯了错误吗?

.h 文件

#ifndef GAME_H
#define GAME_H

#include <string>
using namespace std;

class Game {
public:
Game(); 
void play();
};
#endif

.cpp 文件

#include "game.h"

#include <string>
#include <iostream>

using namespace std;

Game::Game() {}

Game::play() {}

我调用 play 函数如下:

Game* theGame = new Game();
theGame->play();

编译时出现以下错误:

game.cpp:10: error: ISO C++ forbids declaration of ‘play’ with no type
game.cpp:10: error: prototype for ‘int Game::play()’ does not match any in class ‘Game’
game.h:16: error: candidate is: void Game::play()
game.cpp:10: error: ‘int Game::play()’ cannot be overloaded
game.h:16: error: with ‘void Game::play()’
4

3 回答 3

5

第一个错误:

Game::play() {}

应该

void Game::play() {}

第二个 - 你有using namespace std;你的标题。永远不要那样做。不是一个错误,而是不好的做法。

第三 -#include <string>尽管您不使用,但您在标头中有string,所以它没有用,并且会影响编译时间。

第四 - 你使用new:)。请谷歌智能指针。这是 C++ 和原始指针的使用应该至少。

于 2012-08-20T12:22:01.917 回答
2

您忘记了返回类型:

void Game::play() {}
于 2012-08-20T12:22:02.403 回答
2
Game::play() {}

您应该添加 type: void 作为返回类型。

于 2012-08-20T12:22:25.057 回答