Почему не видит функцию(выдает ошибку, что нет такой функции), пытаюсь передать динамический массив структур в функцию
main.cpp
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include "unit2.h"
int main()
{
struct vine_struct
{
double pricer;
double priced;
double review;
char name[30];
};
int vine_num=10;
vine_struct* vine=new vine_struct[vine_num];
display(&vine, vine_num);
}
unit.cpp
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include "unit2.h"
void display(vine_struct *&k, int z)
{
int i=0, j=0, ind=0;
using namespace std;
for(i=0; i<z; i++)
{
if(i==0)
{
for(j=0; j<50; j++)
cout<<"-";
cout<<"\n";
cout<<"|цена,р |цена,$ |Б. |название |"<<endl;
for(j=0; j<50; j++)
cout<<"-";
cout<<"\n";
}
for(ind=0;ind<28;ind++)
{
if(k[i].name[ind]=='_')
k[i].name[ind]=' ';
}
printf("|%7.2lf|%7.2lf|%3.1lf|%28s|\n",k[i].pricer,k[i].priced,k[i].review, k[i].name );
for(j=0; j<50; j++)
cout<<"-";
cout<<"\n";
}
}
unit2.h
#pragma once
struct vine_struct
{
double pricer;
double priced;
double review;
char name[30];
};
#ifndef u
void openw(FILE *a, char z[10] );
void openr(FILE *a, char z[10] );
void openrc(FILE *a, char z[10] );
int check1(int z);
int check2(int z, int x);
int check3(int z);
int check4(int z, int x);
void display(vine_struct *&k, int z);
#endif
Ответы (1 шт):
Ну смотрите сами:
void display(vine_struct *&k, int z);
Что ей передается? Ссылка на указатель на vine_struct и int.
Что вы ей передаете?
vine_struct* vine=new vine_struct[vine_num];
display(&vine, vine_num);
Указатель на указатель на vine_struct. А такую функцию компилятор найти не может. Понятна первая ошибка?
Надо бы так:
display(&vine, vine_num);
Но поскольку у вас есть две разных vine_struct — одна в заголовочном файле, вторая в main(), то получается, что ваша display() в силу объявления должна принимать ссылку на указатель на структуру, объявленную в заголовочном файле, а вы передаете ей указатель на указатель на другую структуру с тем же именем, но объявленную в функции main(). Непонятно, зачем...
Понятна вторая ошибка?
Вот такая main() компилируется:
int main()
{
/*
struct vine_struct
{
double pricer;
double priced;
double review;
char name[30];
};
*/
int vine_num=10;
vine_struct* vine=new vine_struct[vine_num];
display(vine, vine_num);
}
Что она делает и делает ли — это вопрос второй, но программа компилируется.