struct A{
     int a;
     float b;
     bool b;
};struct B{
     int aa;
     A Aa;
};const CopyB* pCopy;//全局的
int Copy(const B* pB)
{
     pCopy = pB;
     return 0;
}请问各位高手这样可以把pB复制到pCopy吗?
如果不能,请帮帮忙解决下,谢谢!

解决方案 »

  1.   

    这样pCopy和pB指向了相同的结构体,不叫复制
    复制用memcpy
      

  2.   

    struct A{
      int a;
      float b;
      bool b;
    };struct B{
      int aa;
      A Aa;
    };const CopyB CopyObj;//全局的
    int Copy(const B* pB)
    {
      CopyObj.aa = pB->aa;
      CopyObj.Aa.a = pB->Aa.a;
      CopyObj.Aa.c = pB->Aa.c;
      return 0;
    }
    以上才叫复制你以前的代码只能叫保存指针,其缺点为:
    1.只能保存一个
    2.当传入那得指针所指的对象销毁时,保存那个直至就失效了,再使用时,就会出现内存崩溃
      

  3.   

    const CopyB* pCopy;//这样写是错的,const必须定义时初始化,并且之后不能再赋值了.
    int Copy(const B* pB)
    {
      pCopy = pB;
      return 0;
    }改成
     CopyB  m_b;
    int Copy(const B b)
    {
      m_b = b;//会调用复制构造函数  (C++中结构体也是类,默认即有这个函数,不用自己添加)
      return 0;
    }
      

  4.   

    不好意思搞错了,应该是这样的
    struct A{
      int a;
      float b;
      bool b;
    };struct B{
      const int aa;
      const A* const Aa;
    };const CopyB* pCopy;//全局的
    int Copy(const B* pB)
    {
      把pB复制到pCopy中(pB是动态变化的)
      return 0;
    }请问各位高手zm样可以把pB复制到pCopy吗?
    如果不能,请帮帮忙解决下,谢谢!
      

  5.   

    要让Copy下子调用之前,pCopy中保存的是上次调用的数据
      

  6.   

    new 一个 CopyMemory()接OK了 
      

  7.   

    没有构造函数NEW不了,前提就是没有构造
      

  8.   

    CopyB* pCopy=NULL;//
    pCopy=new CopyB;
    结构是可以new的吧 
    CopyMemory(pCopy,pB,sizeof(CopyB));应该可以吧
      

  9.   

    const CopyB* pCopy;//全局的
     用const修饰,这个指针指向的内容就不能改变了,所以不能向它赋值
    但这个指针可以指向别处lz要么把const修饰去掉,自己开辟空间拷贝
    要么就用你现在的代码,但这样就不是复制了