2014-09-03 62 views
-6

一個例子返回一個指針所指向的對象,刪除通過從另一功能

#include<iostream> 
using namespace std; 
vector<int>* F() 
{ 
    vector<int>*x=new vector<int>(3); 
    x[1]=1; x[2]=2; x[3]=3; 
    return x; 
} 

現在我要刪除的載體或釋放由X在另一個函數F1指出的存儲器塊,喜歡的東西:

bool F1(vector<int>*x) 
{ 
    delete x; 
    return 1; 
} 

有沒有辦法實現我想要的?

謝謝!

+0

是的。那個代碼。但這不是一個好主意。 – 2014-09-03 22:20:27

+1

沒有理由這樣做。在後C++ 11編譯器中返回一個具體的'vector'是必須的,因爲'vector'是可移動的。你不需要返回一個新分配的vector。 – 101010 2014-09-03 22:21:59

+0

@ 40two即使在C++ 03中。你更有可能獲得複製精簡而不是移動。 – juanchopanza 2014-09-03 22:24:16

回答

2

做出這樣

#include<iostream> 
using namespace std; 
vector<int> F() { 
    vector<int> x; 
    x.resize(4); 
    x[1]=1; x[2]=2; x[3]=3; 
    return x; 
} 

無需F1()F()功能。

+0

yes發表評論後看到它,很可能他犯了一個錯誤,而不是期待使用4個元素哈哈 – Slava 2014-09-03 22:27:57