朋友功能,预期的初级表达之前。代币

时间:2013-03-10 19:40:45

标签: c++ class friend

因此,在单独的头文件中有两个类

客户。 ħ

using namespace std;
#include <iostream>

class Customer{
    friend void Display();
private:
    int number, zipCode;
public:
    Customer(int N, int Z){
    number = N;
    zipCode = Z;
    }
};

市。 H     using namespace std;     #包括     #include“Customer.h”

class City{
    friend void Display();
private:
    int zipCode;
    string city, state;
public:
    City(int Z, string C, string S){
        zipCode = Z;
        city = C;
        state = S;
    }
};

我的main.cpp如下

#include "City.h"
#include "Customer.h"

void Display(){
        cout<<"Identification Number: "<<Customer.number<<endl
                <<"Zip Code: "<<Customer.zipCode<<endl
                <<"City: "<<City.city<<endl
                <<"State: "<<City.state<<endl;
    }


int main() {
    Customer A(1222422, 44150);
    City B(44150, "Woklahoma", "Kansas");

    Display();

}

我很擅长c ++的基础知识,但这是我不明白的地方,所以我的具体问题是....为什么我的Display函数的四行编译器告诉我“错误:预期的主要 - '。'标记之前的表达式“

提前致谢,Macaire

2 个答案:

答案 0 :(得分:1)

您正在尝试从类名

访问数据成员
Customer.number

你做不到。您需要一个Customer实例:

Customer c;
std::cout << c.number;

您可能希望将Display()更改为

void Display(const Customer& c);

然后像这样使用它:

Customer A(1222422, 44150);
Display(A);

,同样适用于City

答案 1 :(得分:1)

Customer是一种类型。您需要一个该类型的对象来访问它的number成员(对于其余的行也是如此)。

您可能打算将CustomerCity作为Display的参数:

void Display(Customer customer, City city){
    cout<<"Identification Number: "<<customer.number<<endl
            <<"Zip Code: "<<customer.zipCode<<endl
            <<"City: "<<city.city<<endl
            <<"State: "<<city.state<<endl;
}

然后将CustomerCity个对象传递给该函数:

Display(A, B);