2012-02-13 119 views
-2
/* ... */ 
private: 
unsigned char** a; 
/* ... */ 
    void foo::init_a() 
    { 
    this->a = new unsigned short*[SIZE]; 
     for (int i=0; i<size; i++) 
      this->a[i] = new unsigned short[SIZE]; 
    } 
/* ... */ 
    unsigned short** foo::gen_a() 
    { 
    /* 
     * Generating unsigned short** b array 
     */ 
    return b; 
    } 
/* ... */ 
void foo::func() 
{ 
this->init_a(); 
this->a = this->gen_a(); // Error here 
} 

/*... */ 

如何设置2d返回数组从函数到另一个数组? 功能gen_a()init_a()良好的工作; memcpy(this->a, this->gen_a(), sizeof(this->gen_a))无法正常工作。 数组的大小a =来自gen_a()函数的临时数组b的大小?复制二维数组

回答

1

既然你自己做的一切,你必须小心去做所有事情。 (一个2D std::vector<std::vector<char> >有一个工作副本构造函数,它是自动的)。

在这种情况下,您的二维数组被构建为一维数组指针的一维数组。每个1D阵列需要memcpy

+0

THX,我知道性病的容器,但我不希望使用它。 – mcuw 2012-02-13 10:56:57

+4

为什么你不想使用std容器? – YXD 2012-02-13 11:02:53

+0

@mcuw:为什么不呢?如果不是为了学习目的,初学者没有理由不使用容器。对于高级程序员来说,实际上也没有真正的原因。 – 2012-02-13 13:39:38

0

使用新的移动语义在C++ 11

class A { 
    A(A&& a); 
} 
+0

错误的问题? – 2012-02-13 13:40:22