struct mystruct
{
int i;
double f;
} ;
typedef mystruct myotherstruct;
//the other .cpp file
struct mystruct; //OK,this is a correct forward declaration.
struct myotherstruct; // error C2371(in vc2k8): 'myotherstruct' : redefinition; different basic types
大家好。 为什么我不能转发声明myotherstruct?
答案 0 :(得分:1)
如果没有明确声明typedefs
的类型定义,则无法转发声明struct
。您应首先转发声明struct
然后typedef
struct mystruct;
typedef mystruct myotherstruct;
答案 1 :(得分:1)
myotherstruct
标识符不是struct
标记,它本身就是类型名称。您在没有struct
关键字的情况下使用它。定义后,该名称不能重用于struct
标记。在您的示例中,您没有正向声明myotherstruct
类型,而是使用标记struct
向前声明myotherstruct
,因为名称为myotherstruct
而导致错误已被用于typedef
。