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() {}

次のように再生関数を呼び出します。

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() {}

2つ目-using namespace std;ヘッダーにあります。絶対にしないでください。言うまでもなくエラーではありませんが、悪い習慣です。

第三#include <string>に、ヘッダーにはを使用していませんがstring、を使用しているため、役に立たず、コンパイル時間に影響を与える可能性があります。

4番目-使用します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 に答える