错误与模块一致'*'(有'int')的无效类型参数

时间:2017-08-03 01:01:06

标签: c++ pointers module

我尝试使用指针和模块的矢量。 我有c ++这个问题: 在main.cpp中:

    #include<iostream>
    using namespace std;
    #include "Funcion1.hpp"

int main (int argc, char *argv[]) {
    int vec[20];
    int *punteroV = &vec[0];
    for(int i = 0;i < 10;i++){
        cout<<"Ingrese numero: ";
        cin>>vec[i];
    }
    cout<<FUN(*punteroV) << endl;
    return 0;
}

并在模块中:

#include "Funcion1.hpp"
#include<iostream>
using namespace std;
int FUN(int &punteroV){

    int num;
    for(int i = 0;i<10;i++){
        for(int j = 0;j<10;j++){
            cout<<"i: "<<(punteroV+ i)<<endl<<"j: "<<(punteroV + j)<<endl;
            if(*(punteroV + i) > *(punteroV + j)){
                num = (punteroV + i);
            }
        }
    }
    return num;
}

并在模块中.hpp

   #ifndef FUNCION1_H
#define FUNCION1_H
int FUN(int&);
#endif

编译器产生错误:

  error invalid type argument of unary '*' (have 'int')

这个错误意味着什么?

1 个答案:

答案 0 :(得分:0)

在功能FUN中你有这一行:

   if(*(punteroV + i) > *(punteroV + j))

你试图对一个整数的引用做指针运算,然后像int*那样对它进行推理你不能直接对引用这样做。要对引用进行数学运算,您必须首先采用如下地址:

   if(*(&punteroV + i) > *(&punteroV + j)){