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

如果您正在编译为 C++ ,您应该能够:

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

(这里不需要 typedef)

如果您希望能够在 C 中编译,则需要为结构使用标记名:

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

(显然string可能需要std::string在 C++ 中工作,并且你应该#include <string>在这个文件中有一个,只是为了确保它本身是“完整的”)。

于 2013-07-30T14:11:27.110 回答
1

string位于std命名空间中,因此将其称为std::string. 您也不需要typedefC++ 中的语法:

#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 回答