簡體   English   中英

通過函數調用C ++的指針引用

[英]Pointer reference through function call C++

我通過以下形式獲得了示例函數:

vector<int> function(var&){...}

該變量是在另一個.cpp文件中定義的(如果相關),並且我假定需要'var&',因此原始值將被覆蓋並且不進行任何復制。 嘗試使用該變量時出現我的問題。 更具體地說,我想做的是使用為該類指定的函數。 (例如var.func())

我嘗試過的(偽語言):

vector<int> function(var& a){
    a.func;
}

由於我遇到錯誤,因此無法正常工作。 “無效使用不完整類型'class var'”。 它必須與定義“ a”有關。

vector<int> function(var a){
    a.func;
}

當像上面那樣將輸入'var&'更改為'var'時,出現錯誤“'a'has incomplete type”。

在上述兩種情況下,它都還指出了“類var的前向聲明”。

vector<int> function(var&){
    ~some random code without defining a 'var&'~ 
}

這運行得很好。

在另一個.cpp文件中,我可以使用

var a; 
a.func;

我包括了.cpp文件的頭文件(也聲明為var a)。 仍然出現相同的錯誤。

我可以使用哪種解決方法? 由於給出了“ vector function(var&){...}”,因此我不認為應該更改輸入類型。

但是,這不起作用,因為我得到一個錯誤。 “無效使用不完整類型'class var'”。 它必須與定義“ a”有關。

不,與定義a var無關。 必須在該函數之前定義var ,但不是。

我可以使用哪種解決方法?

解決方案很簡單:在function的定義之前包含var的定義:

struct var {
   int func;
};
vector<int> function(var& a){
    a.func;
    // ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM