缺少类型说明符 - int假定C4430错误

时间:2013-07-30 14:07:24

标签: c++ struct header

情况:我试图在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

3 个答案:

答案 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>,只是为了确保它自己“完整”。