C++ 编译器没有';我不认识我的结构成员

C++ 编译器没有';我不认识我的结构成员,c++,struct,C++,Struct,我在开头有这样的代码: #include<iostream> using namespace std; struct mehmandar{ char name[30]; char last_name[30]; long national_code; long personal_code; date birthday; date employ_date; mehmandar * nxt; }; struct time{

我在开头有这样的代码:

#include<iostream>

using namespace std;

struct mehmandar{

    char name[30];
    char last_name[30];
    long national_code;
    long personal_code;
    date birthday;
    date employ_date;
    mehmandar * nxt;
};

struct time{

    int hour;
    int min;
};


struct flight{

    long flight_serial;
    long plane_serial;
    char from[30];
    char to[30];
    int traveller_num;
    char pilot_name[30];
    char pilot_lastnam[30];
    mehmandar* mehmandar_majmue=NULL;
    long total_price;
    time flight_time;
    flight * nxt;
};

int main() {

    flight* temp=new flight;

    cin >>temp->flight_time.hour;

    return 0;
}
#包括
使用名称空间std;
结构mehmandar{
字符名[30];
char last_name[30];
长国家代码;
长个人密码;
生日;
雇佣日期;
迈赫曼达尔*nxt;
};
结构时间{
整小时;
int-min;
};
结构飞行{
长途飞行;
长平面序列;
来自[30]的字符;
char到[30];
国际旅行社;
char pilot_name[30];
char pilot_lastnam[30];
mehmandar*mehmandar_majmue=NULL;
长期总价;
飞行时间;
航班*nxt;
};
int main(){
航班*温度=新航班;
cin>>温度->飞行时间.hour;
返回0;
}

但是我得到的错误是,struct flight没有主要部件的成员flight\u time,time没有在struct flight部件中命名类型。

不要将
time
用作全局类型。它与同名的标准库函数冲突

将其更改为
my_time
,或者将其放在您自己的命名空间中。例如:

#include<iostream>

namespace MyApp
{
   struct time
   {
      int hour;
      int min;
   };

   struct flight
   {
      long flight_serial;
      long plane_serial;
      char from[30];
      char to[30];
      int traveller_num;
      char pilot_name[30];
      char pilot_lastnam[30];
      long total_price;
      time flight_time;
      flight * nxt;
   };
}

int main()
{
   using namespace MyApp;
   flight* temp=new flight;

   std::cin >>temp->flight_time.hour;

   return 0;
}
#包括
名称空间MyApp
{
结构时间
{
整小时;
int-min;
};
结构飞行
{
长途飞行;
长平面序列;
来自[30]的字符;
char到[30];
国际旅行社;
char pilot_name[30];
char pilot_lastnam[30];
长期总价;
飞行时间;
航班*nxt;
};
}
int main()
{
使用名称空间MyApp;
航班*温度=新航班;
标准:cin>>温度->航班时间.hour;
返回0;
}

当您可以说
飞行温度时,为什么要堆分配对象?如果使用名称空间std摆脱
,会发生什么?尝试将您的类型
time
重命名为类似于
time\u type
的名称。我必须定义
date
才能编译它,但之后一切正常。我正在使用VisualStudio。尝试定义
日期
?另外,查看编译器输出。您应该会看到这样的行:
error:必须使用'struct'标记来引用此范围中的'time'类型。注意:结构“time”在这里被非类型的“time”声明隐藏:extern time\u t time(time\u t*\u timer)\u THROW将结构命名为与环境提供的函数相同可能是个坏主意。