0

状況: Nodes クラス内に一連のメソッドを作成しようとしていますが、そのすべてが playerName (文字列) と next (listnode) で構成される構造体 "listnode" を使用します。メインクラスでも構造体を使用するため、ヘッダーファイル内に構造体を作成しました。

エラー:コンパイルすると、異常なエラーが発生します。「c4430: 型指定子がありません - int が想定されています。注: C++ はデフォルトの int をサポートしていません」というエラーが 8 のように発生します。

#ifndef STRUCTS_H
#define STRUCTS_H
#include <Windows.h>
#include <string>

typedef struct 
{
    string playerName;
    listnode * next;
} listnode;

#endif
4

3 に答える 3

1

string.はstd名前空間に存在するため、 として参照しますstd::stringtypedefC++の構文も必要ありません。

#include <string>

struct listnode
{
    std::string playerName;
    listnode * next;
};
于 2013-07-30T14:10:28.557 に答える
1

成功する:

typedef struct listnode
{              ^^^^^^^^  
    std::string playerName;
    ^^^^^
    struct listnode * next;
    ^^^^^^
} listnode;
于 2013-07-30T14:10:36.373 に答える
1

C++ としてコンパイルしている場合は、次のことができるはずです。

struct listnode
{
   string playername;
   listnode* next;
};

(ここでは typedef は必要ありません)

C でコンパイルできるようにしたい場合は、構造体にタグ名を使用する必要があります。

typedef struct listnode_tag
{
   string playername;
   struct listnode_tag* next;
} listnode;

(明らかに、C++ で作業stringする必要があるかもしれません。それ自体で「完全」であることを確認するために、このファイルに a を含める必要があります)。std::string#include <string>

于 2013-07-30T14:11:27.110 に答える