用户定义的结构在声明时无法识别并给出类型错误

Posted

技术标签:

【中文标题】用户定义的结构在声明时无法识别并给出类型错误【英文标题】:User defined struct does not recognized and gives type error when declaring 【发布时间】:2021-04-17 18:27:10 【问题描述】:
#include <iostream>
#pragma once

using namespace std;

struct Process

    string name;
    int arrival_time;
    int deadline;
    int task_count;
    int priority;
    Stack task_stack;
    Process *next;
;
struct Subtask

    string name;
    int duration;
    Subtask *next;
;
struct Stack

    Subtask *head;
    void init();
    void close();
    void push(Subtask *in);
    Subtask *pop();
    bool isEmpty();
;

这个文件是我的源文件之一。当我尝试编译代码时,我得到“‘Stack’没有命名类型;你的意思是‘obstack’吗?”。

【问题讨论】:

Please do not post images of code because they are hard to use. 代码应作为文本直接发布在您的问题中。 这是因为Stack在使用前没有声明。 Stack 的声明(以及从 Stack 使用的 Subtask)应该在 Process 的声明之前(使用 Stack)。 【参考方案1】:

这是因为 Stack 在使用前没有声明。 Stack(和Subtask,从Stack使用)的声明应该在Process(使用Stack)的声明之前。

#include <iostream>
#pragma once

using namespace std;

struct Subtask

    string name;
    int duration;
    Subtask *next;
;
struct Stack

    Subtask *head;
    void init();
    void close();
    void push(Subtask *in);
    Subtask *pop();
    bool isEmpty();
;
struct Process

    string name;
    int arrival_time;
    int deadline;
    int task_count;
    int priority;
    Stack task_stack;
    Process *next;
;

【讨论】:

以上是关于用户定义的结构在声明时无法识别并给出类型错误的主要内容,如果未能解决你的问题,请参考以下文章

MySQL phpmyadmin - SELECT FOR UPDATE 无法识别

尝试将用户登录到 QBChat 时如何删除错误“无法识别的选择器”

JIRA 休息 API 错误。无法识别的令牌创建问题

记录个oc的结构体在Swift中无法识别的问题

分析器错误消息: 无法识别的属性“targetFramework”。

数值无法识别