я пытаюсь использовать вектор с указателем и модулями.
У меня есть эта проблема с 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')
Что означает эта ошибка?
В функции FUN у вас есть эта строка:
if(*(punteroV + i) > *(punteroV + j))
Вы пытаетесь сделать арифметику указателя на ссылку на целое число, а затем расценить его как int*
Вы не можете сделать это прямо на ссылку. Чтобы сделать математику по ссылке, вы должны сначала взять ее адрес следующим образом:
if(*(&punteroV + i) > *(&punteroV + j)){
Других решений пока нет …