2015-05-04 70 views
0

我有一个通过向量的地址的API函数:传递指针的API函数

function_A() 
{    
    function_B(); 
} 

function_B() 
{ 
    vector<int> tempVector; 
    function(&tempVector[0]); // <---- API function: fills the vector with values 
    ... 
} 

tempVector创建是在function_B和它的伟大工程。

我想创建的tempVector会在function_A并传给它一个指针,所以程序中的其他函数也会使用tempVector里面的数据。

我试图通过tempVectorfunction(...)几种方式的指针,但我总是得到错误。

function_A() 
{   
    vector<int> tempVector; // <--- creation here 
    function_B(&tempVector); // pass its address 

    //use tempVector 
} 

function_B(vector<int> * tempVector) // receive its address 
{ 

    function(); // <---- API function: how should I pass tempVector? 
    ... 
} 
+0

你尝试'tempVector->数据()'或'&((* tempVector)[0])'? –

+1

如果vector是空的,函数()如何填充矢量?这种不确定行为的味道。 – rozina

回答

0

通行证它像一个指针:

function_B(vector<int> * tempVector) // receive its address 
{ 

    function(tempVector); 
    ... 
} 

function(vector<int> * tempVector) 
{ 
    ... 
} 

OR,passit作为变量:

function_B(vector<int> * tempVector) // receive its address 
{ 

    function(*tempVector); 
    ... 
} 

function(vector<int> tempVector) 
{ 
    ... 
} 
2

为什么它传递作为C指针,而不是作为C++引用?

function_A() 
{   
    vector<int> tempVector; 
    function_B(tempVector); 

    //use tempVector 
} 

function_B(vector<int>& tempVector) 
{ 

    function(&tempVector[0]); 
    ... 
} 
0

你必须取消引用指针像往常一样:

function_B(vector<int> * tempVector) { 
    function(&(*tempVector)[0]); 
}