{"published":"2004-06-08 00:00:00","categories":["C++"],"blog_url":"https://blog.cryolite.net/","provider_name":"Hatena Blog","title":"VC++7.1\u306b\u304a\u3051\u308bfriend\u95a2\u6570\u306e\u30af\u30e9\u30b9\u30b9\u30b3\u30fc\u30d7\u5185\u5b9a\u7fa9","blog_title":"Cry's Blog","image_url":null,"width":"100%","html":"<iframe src=\"https://hatenablog-parts.com/embed?url=https%3A%2F%2Fblog.cryolite.net%2Fentry%2F20040608%2Fp1\" title=\"VC++7.1\u306b\u304a\u3051\u308bfriend\u95a2\u6570\u306e\u30af\u30e9\u30b9\u30b9\u30b3\u30fc\u30d7\u5185\u5b9a\u7fa9 - Cry&#39;s Blog\" class=\"embed-card embed-blogcard\" scrolling=\"no\" frameborder=\"0\" style=\"display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;\"></iframe>","type":"rich","url":"https://blog.cryolite.net/entry/20040608/p1","height":"190","provider_url":"https://hatena.blog","version":"1.0","author_url":"https://blog.hatena.ne.jp/Cryolite/","description":"VC++7.1\u3067\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u304c\u901a\u3089\u306a\u3044\uff0e\u3061\u3087\u3063\u3068\u30b7\u30e7\u30c3\u30af\uff0e class C{ friend void f(){ } }; int main(int argc, char *argv[]) { f(); // \u30b3\u30f3\u30d1\u30a4\u30eb\u30a8\u30e9\u30fc\uff1af\u304c\u898b\u3048\u3066\u3044\u306a\u3044\uff08gcc3.2.2\u3067\u306f\u3082\u3061\u308d\u3093OK\uff09 return 0; } \u8981\u3059\u308b\u306b\u30af\u30e9\u30b9\u30b9\u30b3\u30fc\u30d7\u3067\u5b9a\u7fa9\u3055\u308c\u305ffriend\u95a2\u6570\u306f\u540d\u524d\u7a7a\u9593\u306b\u540d\u524d\u304cinject\u3055\u308c\u306a\u3044\uff0e\u3053\u308c\u5c02\u7528\u306e\u30b3\u30f3\u30d1\u30a4\u30eb\u30a8\u30e9\u30fc\uff08C3767\uff09\u307e\u3067\u7528\u610f\u3055\u308c\u3066\u3044\u308b\uff0e\u4ee3\u308f\u308a\u306b\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u306a\u3089ADL\u3067f\u304c\u898b\u3048\u308b\u3068\u3044\u3046\u3053\u3068\u3089\u3057\u3044\uff0e struct C{ public: friend void f(C &){ } };\u2026","author_name":"Cryolite"}