0

関数のオーバーロードに関する同様の問題と、このエラーがサイトの他の場所で見られましたが、これはすべての関数で発生しています。何が起こっているのか、どのように解決するのかわかりません。

基本的な構文エラーを犯しただけでひどく間違っているのか、それとももっと悪いことなのかはわかりません。誰かがアイデアを持っている場合は、助けてください。

ああ、私はこの質問の形式が悪いことをお詫びします。これは私が尋ねた最初の質問です。

エラー C2084: 関数 'Node::Node(Board *,int)' には既に本体があります

node.h(16) : '{ctor}' の以前の定義を参照してください

Node.h

#pragma once

#include "Board.h"

class Node

{

private:

Board* nodeBoard;

int currentPlayer;

int value;  

Node** childrenNodes;
    
public:

//----some constructors----

Node(Board* board, int player)  {};

Node(Board* board)  {};

~Node(){};  

//----other functions----

Node generateChildren(int playerX, int playerY, Board* board)   {}

// other functions exist in the same format

};

Node.cpp

#pragma once

#include "Node.h"

Node::Node(Board* board, int player)
{

nodeBoard = board;

currentPlayer = player;

childrenNodes = NULL;

}

Node::Node(Board* board)
{

nodeBoard = board;

}
Node::~Node(){};

Node Node::generateChildren(int playerX, int playerY, Board* board)

{

//this fills the nodes based on if the squares next to the player are moveable 

}

Ps Board は私が作成した別のクラスで、Node.js と同じ問題があります。

4

2 に答える 2

12
Node(Board* board, int player) {};

あるべきだ

Node(Board* board, int player); 

クラス定義で。は{}空の実装であり、他の定義を無効にします。

他のコンストラクターとメソッドについても同じです。または、クラス定義で実装をインラインに保つこともできますが、実装ファイルからそれらを削除する必要があります。

于 2013-01-07T15:25:00.320 に答える
0

.hファイルから空の中括弧を削除します-それらはそこに属していません。

于 2013-01-07T15:27:36.563 に答える