2012-02-13 35 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のサイズ?2次元配列のコピー

答えて

1

あなたは自分ですべてをやっているので、すべてを実行するように注意する必要があります。 (2D std::vector<std::vector<char> >には作業コピーコンストラクタがあり、それは自動的です)。

この場合、2D配列は1D配列へのポインタの1D配列として作成されます。 1Dアレイごとにmemcpyが必要です。

+0

Thxをにおける新しい移動のセマンティクスを使用して、私はSTDコンテナについて知っているが、私はそれを使用したくありません。 – mcuw

+4

stdコンテナを使用しないのはなぜですか? – YXD

+0

@mcuw:どうしてですか?学習目的でない場合は、初心者がコンテナを使用しない理由がありません。また、高度なプログラマにとっては事実上決して本当の理由はありません。 –

0

はC++ 11

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

間違った質問ですか? –