2012-04-16 8 views
1

関数からクラスオブジェクトの配列を返す必要があります。私はリサーチから、これを行う最良の方法はポインタであることを理解していますが、これは私のプログラム設計と、複数のCPPファイルからアクセスする必要がある場合の最良の方法ですか?C++関数、ポインタから多次元配列を返す最適な方法は?

main.cppに

#include <class.h> 
#include <functions.h> 

int main(){ 
Class Object[2][]; //define second dimension here? 
some_function(); //should return/create the array with filled in elements. 
int var = arr[2][3]; // want to be able to do something like this in main 
} 

functions.cpp

void some_function(){ 
// assign values 
arr[2][3] = 1; 
} 
+1

はベクトルを試してみてください。 'ベクトル> some_function(){...}'もちろん、 '>'ではなく ' ''を使うのにC++ 11が必要です。 – chris

答えて

8

あなたが本当にあなたの多次元配列のためstd::vector<std::vector<Object> >を使用する必要があります。生の配列を使用するとエラーが起こりやすくなります。なぜなら、C++を使用しているので、必要に応じて自動的にサイズを変更するstd::vectorなどの便利なものを使用しないでください。

あなたもそうのようなあなたの関数からvectorを返すことができます。

std::vector<std::vector<Object> > my_function() { /* do something */ return some_vector; }

+4

そして、C++ 11を使用していてObjectが動かせる場合、これは最適です(ベクトル内のすべてをコピーしないという点で)。 C++ 11を使用していない場合は、オブジェクトをboostまたはtr1 shared_ptrに入れてください。 – Skrymsli

+0

このようなベクトルをポインタなしで返すと、一括データのコピーを行わずにベクター配列を返すことができますか? –

+0

@ MartinsJamesは適切なコンパイラを与えました。 –

関連する問題