Ошибка: неверный аргумент типа унарного ‘*’ (есть ‘int’) с модулями

я пытаюсь использовать вектор с указателем и модулями.
У меня есть эта проблема с 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')

Что означает эта ошибка?

-3

Решение

В функции FUN у вас есть эта строка:

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

Вы пытаетесь сделать арифметику указателя на ссылку на целое число, а затем расценить его как int* Вы не можете сделать это прямо на ссылку. Чтобы сделать математику по ссылке, вы должны сначала взять ее адрес следующим образом:

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]