Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 类中的一个变量显示,但另一个变量不显示';T_C++_Class - Fatal编程技术网

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...
};