我在max.h中定义了TSObjectsHead结构体
在.cpp文件中加入了#include "max.h"
使用struct TSObjectsHead* TVobject1;定义一个指针并给指针赋值
单是在使用TVobject1->ObjectNum = geomobject_num;
时报错error C2027: use of undefined type 'TSObjectsHead'
        E:\SOURCE\VC\OpenGLRe\y_tab.cpp(37) : see declaration of 'TSObjectsHead'
双击它指向的位置是struct TSObjectsHead* TVobject1;这一行,而不是max.h中定义的位置可是如果我指使用TSObjectsHead* TVobject1;声明指针在声明的地方就会出错这是怎么回事呀,应该怎样处理呢?

解决方案 »

  1.   

    在使用该结构的文件中包含结构定义的头文件
    #include "your_struct.h"
      

  2.   

    使用struct TSObjectsHead* TVobject1;定义一个指针并给指针赋值
    单是在使用TVobject1->ObjectNum = geomobject_num;在声明变量的时候不需要加上struct,这是在定义结构体时用的
     修改为:
    TSObjectsHead * TVobject1 ;
    另外指针变量需要实例化后才能使用
    TVobject1 = new TSObjectsHead ;
    TVobject1->ObjectNum = ...... ;
      

  3.   

    :在使用该结构的文件中包含结构定义的头文件
    :#include "your_struct.h"是头文件名要和结构体名一样吗,我在max.h中定义的,!而且加了#include "max.h"
    :在声明变量的时候不需要加上struct,这是在定义结构体时用的
    正常C++是这样用的,可我要是去掉那个struct就会出下面这个错误
    error C2501: 'TSObjectsHead' : missing storage-class or type specifiers:TVobject1 = new TSObjectsHead ;
    我是在其它函数中为TVobject1 赋值的
    TVobject1 = t;现在编译就没有通过,不是这里的问题
    我用了MFC框架,这东东有没有什么变态的要求呀.........
    就象#include "stdafx.h"是的昨天把我一顿折腾,最后不得不对它说I 服了 you.
      

  4.   

    问题解决了,方法就是把“max.h”加到"stdafx.h"里,现在还是不大明白为什么直接加“max.h”不行,加到"stdafx.h"里再间接加入就可以了不过恐怕被偶不幸言中,又是MFC的绝杀.............
    天啊,用VC编程即要遵守C++的规则,还得遵守MFC的不知名法令,敢问VC专家们MFC这样的陷阱还有几筐....先脱帽向伟大的MFC设计者致敬,你们真TMD牛X,能把MFC设计成这样一个时刻要人迁就,却从不给人一丝体谅的卑劣角色,最后不得不说I 服了 you,I真的服了you.请问谁能解释这篇牢骚开始处提出的问题...
    过两天解决不了也就要结贴了....
      

  5.   

    在max.h中定义了TSObjectsHead结构体
    在.cpp文件中加入了#include "max.h"
     TSObjectsHead* TVobject1;
    这样是可以的
      

  6.   

    在cpp文件中的包含文件中,stdafx.h需要第一个被包含。希望你没有犯这个基本错误。
      

  7.   

    :在cpp文件中的包含文件中,stdafx.h需要第一个被包含。希望你没有犯这个基本错误。太惭愧了,好像就是这个问题,原来这是基本常识5555555555555555
    不过还要说VC的设计者有问题,既然是基本的东西,不这样就会出错,那编译器就应该在每个cpp文件的第一行强制加上这个东东.............不过现在还是不知道为什么这东东要第一个被包含....有没有人告诉我...我先去网上找找,过一会不管找没找到都放分,哈哈