起初遇到這個問題的時候便得知無法返回,那么為了達到相同的目的,該怎么辦呢?
第一個想法便是
int * void() { int * want = new int[size]; //......do something return want; }
這種的好處是非常簡潔,返回一個數組指針,C++是允許返回指針的,但必須在方法里面好好賦值,也就是說“do something”的時候,如果添加到want這個數組的個數是不確定的時候(此方法多次調用的時候)
就會非常的不方便,size不確定。
那么便生成了第二種想法,利用vector
vector<int *> void() { vector<int *> want; //...do something // must int * add = ? ; //want.push_back(add) return want; }
這里注意的是必須中途用指針的add去繼承?的值,不能直接int add =?(會報錯,無法push_back)
但是,讀出want元素的時候,你回發現全是硬盤地址。。。00xxadd00,00qssdf00之類的。。。
於是最終版本
vector<int > void() { vector<int > want; //...do something // must int add = ? ; //want.push_back(add) return want; }
直接是int對象的vector即可,既滿足了原來的需求(返回不定長數組),vector又有很多方便的方法可以調用。
