通过函数调用C ++

时间:2018-01-06 04:41:20

标签: c++

我通过以下形式获得了一个示例函数:

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

变量在另一个.cpp文件中定义(如果相关),我假设&#39; var&amp;&#39;需要这样才能覆盖原始值并且不进行复制。尝试使用该变量时出现问题。更具体地说,我想要做的是使用为该类指定的函数。 (例如var.func())

我尝试过(伪语言):

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

这不起作用,因为我收到错误。 &#34;无效使用不完整类型&#39; class var&#39;&#34;。它必须与定义&#39; a&#39;有关。

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

更改输入&#39; var&amp;&#39;到&#39; var&#39;像上面我得到错误&#34;&#39; a&#39;有不完整的类型&#34;。

它还注意到&#34;类var&#39;&#34;的前向声明。在上述两种情况下。

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

这完美运行。

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

var a; 
a.func;

我包含了.cpp文件的头文件(也声明了var a)。仍然出现相同的错误。

我可以使用哪种解决方法?由于&#34;向量函数(var&amp;){...}&#34;给出我不认为我应该改变输入类型。

1 个答案:

答案 0 :(得分:2)

  

然而,由于我收到错误,这不起作用。 &#34;无效使用不完整类型&#39; class var&#39;&#34;。它必须与定义&#39; a&#39;有关。

不,这与定义a而不是定义var有很大关系。 var必须在该功能之前定义,但它不是。

  

我可以使用哪种解决方法?

解决方案很简单:在var定义之前加入function的定义:

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