'array' is not a member of 'Planet'
Написал класс Planet, с помощью которого я должен считать некоторые данные из одного файла и записать в другой. При вызове метода .read_db происходит ошибка 'array' is not a member of 'Planet'. Что можно исправить?
//main
#include "lab2.hpp"
#include "lab2db1/lab2db1.cpp"
int main(){
const int N = 100;
Planet* array = new Planet;
const char* filename = "dbase1.txt";
int n;
Planet::array.read_db(filename, array, N);
return 0;
}
//lab2db1.cpp
#include "lab2db1.hpp"
Planet::Planet() {
Name = new char[0];
Name[0] = '\0';
Diameter = 0;
Life = 0;
Satellite = 0;
}
Planet::Planet(char* Name, int Diameter, int Life, int Satellite){
this->Name= new char (std::strlen(Name)+1);
std:strcpy(Name, Name);
this->Diameter=Diameter;
this->Life=Life;
this->Satellite=Satellite;
}
int Planet::read_db(const char* filename, Planet* arr, int &n) {
std::ifstream fin(filename, std::ios::in);
if (!fin){
std::cout<<"Файла " << filename << " нет!" << std::endl;
return 1;
}
fin >> n;
for (int i = 0; i < n; i++){
fin >> arr[i].Name >> arr[i].Diameter >> arr[i].Life >> arr[i].Satellite;
}
fin.close();
return 0;
}
int Planet::write_db(const char* filename, Planet* arr, int n){
std::ofstream fin(filename, std::ios::out);
if (!fin){
std::cout<<"Файла " << filename << " нет!" << std::endl;
return 1;
}
for (int i=0; i<n; i++){
fin << arr[i];
}
fin.close();
return 0;
}
std::ostream& operator<<(std::ostream &out, Planet &planet){
out << planet.Name << ' ' << planet.Diameter << ' ' << planet.Life << ' ' << planet.Satellite << '\n';
return out;
}
Planet::~Planet() { delete[] Name; }
//lab2db1.hpp
#include <iostream>
#include <fstream>
#include <cstring>
class Planet{
private:
char* Name;
int Diameter;
int Life;
int Satellite;
public:
friend std::ostream& operator<<(std::ostream &, Planet &);
char* getName(){
return Name;
};
int getDiameter(){
return Diameter;
};
int getLife(){
return Life;
};
int getSatellite(){
return Satellite;
};
void setName(char* Name){
this->Name=Name;
}
void setDiameter(int Diameter){
this->Diameter=Diameter;
}
void setLife(int Life){
this->Life=Life;
}
void setSatellite(int Satellite){
this->Satellite=Satellite;
}
Planet();
Planet (char* Name, int Diameter, int Life, int Satellite);
int read_db(const char* FilenameFrom, Planet* Arr, int &N);
int write_db(const char* FilenameTo, Planet* Arr, int N);
~Planet();
};
Ответы (1 шт):
Автор решения: FLIIINK_
→ Ссылка
Когда ты пишешь Planet::array ты пытаешься обратиться к статическому полю класса Planet с названием array, но такого у тебя нет. Если ты хочешь вызвать метод у объекта класса то тебе нужно просто указать имя объекта
array.read_db(filename, array, N);