2012-04-16 66 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

嘗試載體。 'vector > some_function(){...}'當然,你需要C++ 11來使用'>'而不是'>'。 – chris 2012-04-16 22:16:23

回答

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 2012-04-16 22:20:18

+0

不返回像這樣的矢量,沒有指針,使矢量數組可以在沒有任何批量數據複製的情況下返回? – 2012-04-16 22:26:38

+0

@MartinJames給出了一個體面的編譯器,是的。 – 2012-04-16 22:46:32