首页 > 解决方案 > 这是参数还是类型?

问题描述

在示例代码(如下)中,我想知道传递给类getSocialSecurityNumber中的参数是什么Citizen。为什么是(Passkey<Government>)而不是(Passkey<Government> x)

它与类模板/仿函数有关吗?

#include <string>
#include <iostream>

using namespace std;


template <typename T>
class Passkey {
private:
    friend T;
    Passkey() {}
    Passkey(const Passkey&) {}
    Passkey& operator=(const Passkey&) = delete;
};

class Citizen {
public:
    string getSocialSecurityNumber(Passkey<Government>) const { return _socialSecurityNumber; };
                                   ^^^^ (here)

private:
    string _socialSecurityNumber;
};

class Government {
private:
    void printCitizenInfo(const Citizen &citizen) const;
};

void Government::printCitizenInfo(const Citizen &citizen) const {
    cout << "Citizen SSN: " << citizen.getSocialSecurityNumber(Passkey<Government>()) << endl;
}

标签: c++templates

解决方案


Passkey<Government>是一种类型。参数显然没有使用,它没有名字。


推荐阅读