C++ 类中的一个变量显示,但另一个变量不显示';T
编辑:完整代码: 我有一个客户类:C++ 类中的一个变量显示,但另一个变量不显示';T,c++,class,C++,Class,编辑:完整代码: 我有一个客户类: class Customer { public: Customer(); Customer(string n); Customer(string n, string add, string acct); string display_short()const; // display customer info in format:
class Customer {
public:
Customer();
Customer(string n);
Customer(string n, string add, string acct);
string display_short()const; // display customer info in format:
// Customer name: Alice
// Address: 2 North Street
string display_all()const; // display customer info in format:
// Alice, 2 North Street, 234-567
bool operator<(Customer right)const; // compares Customer data member name
string get_name()const;
private:
string name; // Multiple word name
string address;
string account_number;
};
我不完全确定我做错了什么。让客户(字符串n)代码>构造函数显式,并为变量使用更有意义的名称。在代码中,有变量cust
,它是一个包含客户名称而非客户的字符串,您可以使用CreateJobs
函数中的隐式转换构造函数基于该名称添加客户
顺便说一句,您的代码在一些地方丢失了const&
,以避免无用的复制。一个例子是
bool operator<(Customer right)const;
bool操作符所以我发现问题出在我的映射中,我只是用处理程序添加客户名称字符串,而不是客户对象(有地址)。
我需要遍历集合,使用指针获取位置的值,并将其发送到我的作业任务映射(它在显示上调用\u short)几乎可以肯定它不会显示地址,因为地址变量没有正确分配。但这会发生在代码的其他部分,因此很难提供帮助。发布更多代码,最好是删除不相关代码的完整程序。添加更多代码到help@Sarah仍然看不出任何错误,如果我把你发布的代码拿出来,自己编写丢失的代码,我希望我能看到地址(尽管我没有这样做)。这就是为什么最好发布完整的程序。请删除不相关的代码(这将是您编写的大部分代码),并发布一个最小但完整的程序来说明问题。这对你来说是一个相当大的工作,但是你会很快得到答案。将错误检查添加到输入调用中!总是。。。2.若未解决,若地址读取正确,则添加调试打印(或断点,若您可以使用调试器),以查看不同位置的地址长度,以查看它何时有内容以及何时变为空。老实说,我不知道如何剔除它,每个函数都会导致另一个。我在创建时为地址添加了一个cout,它显示正确。代码如下:
string Job::display() const
{
cin.clear();
cin.sync();
cout << endl << job_details << endl;
string name = customer.display_short();
cout << "Case handled by: ";
string handler;
getline(cin, handler);
return handler;
}
int main()
{
cout << "Loading customers... \n\n\n\n" ;
customerList.insert(Customer("D David", "1 West Street", "123-456"));
customerList.insert(Customer("A Alice", "2 North Street", "234-567"));
customerList.insert(Customer("C Carl", "3 East Street", "345-678"));
customerList.insert(Customer("Z Zoro", "4 South Street", "456-789"));
int selection;
cout << "Number of jobs for today: ";
cin >> selection;
CreateJobs(selection);
listJobs();
}
// Create a record for new customer if required
void newCustomer(string cust)
{
string add;
cout << "Customer address: ";
getline(cin, add);
string acct;
cout << "Account number: ";
getline(cin, acct);
customerList.insert(Customer(cust, add, acct));
}
Customer::Customer(string n, string add, string acct)
{
name= n;
address = add;
account_number = acct;
}
bool operator<(Customer right)const;
bool operator<(const Customer &right) const;
class Customer
{
static int lastId;
int id;
public:
Customer() : id(++lastId) { cout << "Creating customer " << id << endl; }
Customer(const Customer &rhs)
: name(rhs.name)
, address(rhs.address)
, account_nummber(rhs.account_number)
, id(++lastId)
{
cout << "Copying customer " << rhs.id << " to new customer " << id << endl;
}
// Other code ommited...
};