2012-02-13 121 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