C++ c++;类别->;向量->;文件
我有这个要求 我正在尝试创建一个简单的数据库模式,与我在这里看到的略有不同。我有一个类文件(client.h)及其实现(client.cpp): 但我明白了 ../src/company.cpp:49:2:错误:“客户端”未在此范围内声明 客户。推回(c)C++ c++;类别->;向量->;文件,c++,vector,C++,Vector,我有这个要求 我正在尝试创建一个简单的数据库模式,与我在这里看到的略有不同。我有一个类文件(client.h)及其实现(client.cpp): 但我明白了 ../src/company.cpp:49:2:错误:“客户端”未在此范围内声明 客户。推回(c) 那么,如何实现这一点呢?正如Morgan在评论中提到的,当您试图在实现文件中定义成员函数,但忘记将类名添加为前缀时,通常会出现这个问题(例如,void add_client(){}而不是void Company::add_client(){}
那么,如何实现这一点呢?正如Morgan在评论中提到的,当您试图在实现文件中定义成员函数,但忘记将类名添加为前缀时,通常会出现这个问题(例如,
void add_client(){}
而不是void Company::add_client(){}
)
这个错误很常见,很容易被忽略,因为在文件中定义一个名为
add\u client
的新的免费函数是完全合法的,这与Company
类无关。这就是为什么编译器只在您尝试访问数据成员时才抱怨,而不是在之前。您的问题描述是正确的不清楚,是否出现编译器错误?尝试访问Company::print_clients()中的clients
向量时会出现什么错误
例如?请提供尝试访问向量的Company类的成员函数的实现代码。您确定没有忘记将Company::作为前缀添加到Company.cpp中的函数名称中?谢谢Merlind!
#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;
}
class Company {
public:
Company();
~Company();
void add_client();
void print_clients();
void loadClientsFromFile();
void saveClientsToFile();
private:
vector<Client> clients;
} cmp;
#endif /* COMPANY_H_ */
void add_client() {
Client c;
c.input();
clients.push_back(c);
}