У меня есть это требование.C++ Класс -> Вектор -> Файл
Я пытаюсь создать простую схему базы данных, немного отличающуюся от того, что я видел здесь. У меня есть файл класса (client.h) с его реализации (client.cpp):
#ifndef CLIENT_H_
#define CLIENT_H_
#include <iostream>
using namespace std;
class Client {
public:
// constructors
Client();
Client(string new_name, string new_tel, string new_addr);
// getters
string getName();
string getAddr();
string getTel();
// setters
void setName(string);
void setAddr(string);
void setTel(string);
void display();
void input();
private:
// fields
string name;
string addr;
string tel;
};
#endif /* CLIENT_H_ */
/*
*ad client.cpp
*
* Created on: Jan 12, 2017
* Author: niksarid
*/
#include <iostream>
#include "client.h"
using namespace std;
Client::Client() {
setName("");
setAddr("");
setTel("");
}
Client::Client(std::string new_name, std::string new_addr, std::string new_tel) {
setName(new_name);
setAddr(new_addr);
setTel(new_tel);
}
string Client::getName() {
return name;
}
string Client::getAddr() {
return addr;
}
string Client::getTel() {
return tel;
}
void Client::setName(string p_name) {
name = p_name;
}
void Client::setAddr(string p_addr) {
addr = p_addr;
}
void Client::setTel(string p_tel) {
tel = p_tel;
}
void Client::input() {
string tmp;
cout << "INPUT CLIENT INFO" << endl;
cout << "Name: ";
cin >> tmp;
setName(tmp);
cout << "Address: ";
cin >> tmp;
setAddr(tmp);
cout << "Telephone: ";
cin >> tmp;
setTel(tmp);
}
void Client::display() {
cout << name << "\t" << addr << "\t" << tel << endl;
}
Так что я пытаюсь сделать класс компании, который будет содержать вектор клиентов и при запуске программы она загрузит файл данных «clients.dat» в вектор. Я смогу добавить клиента или удалить клиента из вектора. В конце вектор будет сохранен обратно на «clients.dat».
Итак, файл (company.h), как это:
class Company {
public:
Company();
~Company();
void add_client();
void print_clients();
void loadClientsFromFile();
void saveClientsToFile();
private:
vector<Client> clients;
} cmp;
#endif /* COMPANY_H_ */
, но я не могу ссылаться клиентов вектор в любой из публичных методов класса компании.
EDIT: Извините! Забыл важную часть! Например, когда я пытаюсь add_client()
,
void add_client() {
Client c;
c.input();
clients.push_back(c);
}
, но я получаю ../src/company.cpp:49:2: ошибка: «клиенты» не был объявлен в этой области видимости clients.push_back (с);
Итак, как достичь этого?
Описание проблемы нечеткое, вы получаете ошибку компилятора? –
Какая ошибка возникает при попытке получить доступ к вектору 'clients' в' Company :: print_clients() 'например? – merlinND
Просьба представить код реализации функций-членов класса Company, где вы пытаетесь получить доступ к вектору. Вы уверены, что не забыли добавить Company :: как префикс имен функций в company.cpp? – Morgan