情况:我试图在Nodes类中创建一系列方法,所有这些方法都将使用由playerName(string)和next(listnode)组成的struct“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
答案 0 :(得分:1)
string
位于std
命名空间中,因此请将其称为std::string
。您在C ++中也不需要typedef
语法:
#include <string>
struct listnode
{
std::string playerName;
listnode * next;
};
答案 1 :(得分:1)
成功:
typedef struct listnode
{ ^^^^^^^^
std::string playerName;
^^^^^
struct listnode * next;
^^^^^^
} listnode;
答案 2 :(得分: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>
,只是为了确保它自己“完整”。