C++ 这是参数还是类型?

C++ 这是参数还是类型?,c++,templates,C++,Templates,在下面的示例代码中,我想知道在Citizen类中传递给getSocialSecurityNumber的参数是什么。为什么是(密钥)而不是(密钥x) 它与类模板/函子有关吗 #include <string> #include <iostream> using namespace std; template <typename T> class Passkey { private: friend T; Passkey() {} Pa

在下面的示例代码中,我想知道在
Citizen
类中传递给
getSocialSecurityNumber
的参数是什么。为什么是
(密钥)
而不是
(密钥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;
}
#包括
#包括
使用名称空间std;
模板
类密钥{
私人:
朋友T;
密钥(){}
密钥(常量密钥&){}
密码和运算符=(常量密码和)=删除;
};
阶级公民{
公众:
字符串getSocialSecurityNumber(Passkey)常量{return\u socialSecurityNumber;};
^^^^(这里)
私人:
字符串_socialSecurityNumber;
};
阶级政府{
私人:
作废printCitizenInfo(const Citizen&Citizen)const;
};
无效政府::printCitizenInfo(const Citizen&Citizen)const{

cout
Passkey
是一种类型。参数显然没有被使用,它没有名字。

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

啊哈,这就是政府“安全”代码的编写方式。@Slava你能给我一点提示吗?啊哈,这就是“安全”的方式政府代码是编写的。@Slava你能给我一点提示吗?那么它的目的是什么?它是如何使用的?参数*没有*使用。好的,如果我理解,它只与强制调用函数GetSocialSecurityNumber的签名有关。那么它的目的是什么?它是如何使用的?参数*没有*使用。好的,如果我据了解,它仅与调用函数getSocialSecurityNumber的强制签名有关