0

私はコースワークの戦艦プログラムを作成しており、プレーヤーの展開をデバッグしていましたが、エラーが発生したか、解決策を見つけることができませんでした:

bb.cpp:12: error: previous declaration of ‘int vert(int*, std::string)’

int vert への以前の参照をコードで検索しましたが、何も見つかりませんでした。

ここに関数のプロトタイプがあります

//game function prototypes

int deploy();  
int firing();  
int gridupdte();  
int win = 0;  
int vert(int *x, string sa);  
int hor(int *y, string s);  
int check();  

関数 vert は次のとおりです。

int vert(*shipx, shiptype) //Calculates where the bow of the ship should be (the pointy bit)  
{  
    int shiplen;  
    int bow;

    switch(shiptype) // Determines the length to add to the y co-ordinate
    {
        case "cv" : shiplen = 5; break;
        case "ca" : shiplen = 4; break;
        case "dd" : shiplen = 3; break;
        case "ss" : shiplen = 3; break;
        case "ms" : shiplen = 2; break;
    }

    bow = *shipx + shiplen;

    *shipx = bow;

    return *shipx;
}

int hor (*shipy, shiptype) //Calculates where the bow of the ship should be (the pointy bit)
{
    int shiplen;
    int bow;

    switch(shiptype) // Determines the length to add to the x co-ordinate
    {
        case "cv" : shiplen = 5; break;
        case "ca" : shiplen = 4; break;
        case "dd" : shiplen = 3; break;
        case "ss" : shiplen = 3; break;
        case "ms" : shiplen = 2; break;
    }

    bow = *shipy + shiplen;

    *shipy = bow;

    return *shipy;
}

私は、コード全体のコンパイルで他のエラーを認識しています。

4

4 に答える 4

2

int vert(*shipx, shiptype) { .. }パラメータの型はわかりません。

あなたは完全なエラー (複数行にまたがる) を私たちに伝えるのを怠っていましたが、前の宣言が定義と一致しないと言ったのではないかと思います。

書く:

int vert(int* shipx, string shiptype) { .. }
于 2011-04-10T15:57:19.177 に答える
1

関数定義にパラメーターの型と名前を含める必要があります。

int vert (int *shipx, string shiptype) {
...
}

また、プロトタイプと定義の間でパラメーター名を一致させる必要があります。

于 2011-04-10T15:56:50.643 に答える
0

この投稿は、引用したエラーに実際には対処していません。しかし、私が指摘したいあなたのコードにはもう1つの問題があり、それに対する解決策も提案しています。

C++ では、switch-case文字列リテラルではなく、整数定数のみを持つことができます。

したがって、これは間違っています:

switch(shiptype) // Determines the length to add to the x co-ordinate
{
    case "cv" : shiplen = 5; break;
    case "ca" : shiplen = 4; break;
    case "dd" : shiplen = 3; break;
    case "ss" : shiplen = 3; break;
    case "ms" : shiplen = 2; break;
}

これはコンパイルされません。

次のように enum を定義することをお勧めしますShipType

enum ShipType
{
    cv,
    ca,
    dd,
    ss,
    ms
};

そして、次のように記述できるようにshiptype、 typeを宣言します。ShipType

switch(shiptype) // Determines the length to add to the x co-ordinate
{
    case cv : shiplen = 5; break;
    case ca : shiplen = 4; break;
    case dd : shiplen = 3; break;
    case ss : shiplen = 3; break;
    case ms : shiplen = 2; break;
}
于 2011-04-10T15:55:54.397 に答える
0

int vert(int *shipx, std::string shiptype)3 番目の灰色のボックスで定義がどのように表示されるかを変更しhorます。

于 2011-04-10T15:57:44.890 に答える