请问class里面能声明strcut吗?
比如这样:
class CJPG2PDF  
{
   public:
   CJPG2PDF();
virtual ~CJPG2PDF();
         AA jpg2pdf_begin(double a,double b);//在这里,我想使用结构类型AA,但是编译提示AA没有类型
struct AA
{ int a, b;};struct BB
{AA a;  AA b};
};
请问,我如何才能把自己的结构当成一种数据类型来声明方法呢?

解决方案 »

  1.   

    你要把struct在别的文件里定义成全局变量,再在这里使用
      

  2.   

    你定义在下面当然认不到了
    class CJPG2PDF  
    {
     struct AA 
    { int a, b;}; struct BB 
    {AA a;  AA b}; 
      public: 
      CJPG2PDF(); 
    virtual ~CJPG2PDF(); 
            AA jpg2pdf_begin(double a,double b);//在这里,我想使用结构类型AA,但是编译提示AA没有类型 
    };
    这样应该就认得到了
      

  3.   


    struct AA
    { int a, b;}; 
    AA jpg2pdf_begin(double a,double b);//在这里,我想使用结构类型AA,但是编译提示AA没有类型
      

  4.   

    我这样试过了,还是不行,在.cpp文件中又提示AA类型没有声明
      

  5.   

    当然可以了,但作用域不同了,是作为了类的一个类型
    比如class A
    {
    ...
    public:
    typedef struct _MY_
    {
      ...
    }MY, * PMY;
    ...
    }
    那么你在使用这个类型时就需要A::MY a;这样来声明了
      

  6.   

    A::MY a;这种情况是说在类的作用域外时你的情况是要把结构定义提到那个函数前面
      

  7.   

    我已经把结构提到前面了,
    在.h文件中是这样的:class CJPG2PDF  
    {

    typedef struct AA A_NODE;
            typedef  struct BB BJPG,*BJPG;

    struct AA { int a;int b;

    }; struct BB
    {
      AA a;
              AA b;
    };
    public:
    PJPEG2PDF Jpg2PDF_BeginDocument(double pdfW,double pdfH);
    CJPG2PDF();
    virtual ~CJPG2PDF();
    };
    在.CPP中这样:CJPG2PDF::AA  CJPG2PDF::Jpg2PDF_BeginDocument(double pdfW, double pdfH)
    {}
    这样就没有错误了,但是不知道后续会不会出现什么问题啦
    多谢啦。
      

  8.   


    举个例子,CFile的那一堆modeXXX的标志,为什么以枚举的形式声明在CFile内呢?因为这个标志只有CFile会用到,进行一个范围圈定。
      

  9.   

    #include "stdafx.h"#include <iostream>
    using namespace std;class CJPG2PDF 
    {
    public:
    CJPG2PDF();
    virtual ~CJPG2PDF();

    struct AA

    int a, b;
    }; struct BB
    {
    AA a;  
    AA b;
    }; AA jpg2pdf_begin(double a,double b);//在这里,我想使用结构类型AA,但是编译提示AA没有类型
    };int _tmain(int argc, _TCHAR* argv[])
    {
    CJPG2PDF::AA a; return 0;
    }
      

  10.   

    谢谢各位啦,问题已经得到解决了
    有一段C语言代码是这样写的: if('f' == c) 
    sprintf(pPDF->pdfXREF[index], "%010d 65535 f\r\n", offset);我想把它转成C++的,要怎么实现啊?因为我要在VC/MFC中写一个新类
      

  11.   

    把你的struct放在类的最上面就可以了。