Така че извиквам функция, която приема входни данни като limit i и масив от обекти h.
#include<iostream>
#include<vector>
using namespace std;
class hotel
{
private:
string name,add;
char grade;
int charge,no;
public:
void getdata();
void putdata();
void grade_print(int,hotel[]);
void room_charge();
void top2();
};
void hotel::getdata()
{
cout<<"Add Name: ";
getline(cin>>ws,name);
cout<<"Add Addres: ";
getline(cin>>ws,add);
cout<<"Enter grade,room charge and no. of rooms: ";
cin>>grade>>charge>>no;
}
void hotel::putdata()
{
cout<<name<<endl<<add<<endl<<grade<<endl<<charge<<endl<<no;
}
void hotel::grade_print(int num,hotel h[])
{
int i,j,k; char val;
for(i=0;i<num;i++)
{
val=h[i].grade;
for(j=0;j<num;j++)
{
if(h[j].grade==val)
{
cout<<h[j].grade<<endl;
h[j].grade=' ';
}
}
}
}
int main()
{
std::vector <hotel> h(1);
int i=0,j;
cout<<"Want to add hotel? Press 1: ";
cin>>j;
while(j==1)
{
h[i].getdata();
h.resize(2);
i++;
cout<<"Want to add more? Press 1 for yes, 0 for no: ";
cin>>j;
}
grade_print(i,h);
}
грешка тук показва, че grade_print е извън обхвата. Също така оценката е частен член, но се извиква от функция член. Така че защо показва, че оценката не може да бъде извикана. Моля, кажете ми защо е така и какво мога да направя, за да го поправя? Редактиране1: Декларирането на функцията като static void не помага, тъй като компилаторът показва, че функцията не може да бъде декларирана като static void.
D:\C++ Programs\testfile.cpp|30|error: cannot declare member function 'static void hotel::grade_print(int, hotel*)' to have static linkage [-fpermissive]|
grade_print(i,h);
имате нужда от обект. Може би hotel::grade_print() трябва да е статична функция или безплатна функция. - person drescherjm   schedule 21.01.2018endl
s: този поток е абсолютно, положително, безспорно зачервен. Повечето или всички от тях трябва да бъдат заменени с'\n'
; който завършва ред, без допълнителни неща. - person Pete Becker   schedule 21.01.2018