2014-09-03 68 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