{"id":1083,"date":"2014-08-15T13:12:41","date_gmt":"2014-08-15T17:12:41","guid":{"rendered":"http:\/\/jungwon.kim\/?p=1083"},"modified":"2014-08-15T13:12:41","modified_gmt":"2014-08-15T17:12:41","slug":"accessing-protected-members-of-superclass-in-c-with-templates","status":"publish","type":"post","link":"https:\/\/blog.jungwon.kim\/?p=1083","title":{"rendered":"accessing protected members of superclass in C++ with templates"},"content":{"rendered":"<p><a href=\"http:\/\/stackoverflow.com\/questions\/4010281\/accessing-protected-members-of-superclass-in-c-with-templates\">http:\/\/stackoverflow.com\/questions\/4010281\/accessing-protected-members-of-superclass-in-c-with-templates<\/a><\/p>\n<p style=\"color: #000000;\">This can be amended by pulling the names into the current scope using\u00c2\u00a0<code>using<\/code>:<\/p>\n<pre class=\"lang-cpp prettyprint prettyprinted\" style=\"color: #000000;\"><code><span class=\"kwd\" style=\"color: #00008b;\">template<\/span><span class=\"pun\">&lt;<\/span><span class=\"kwd\" style=\"color: #00008b;\">typename<\/span><span class=\"pln\"> T<\/span><span class=\"pun\">&gt; <\/span><span class=\"kwd\" style=\"color: #00008b;\">struct <\/span><span class=\"typ\" style=\"color: #2b91af;\">Subclass <\/span><span class=\"pun\">: <\/span><span class=\"kwd\" style=\"color: #00008b;\">public <\/span><span class=\"typ\" style=\"color: #2b91af;\">Superclass<\/span><span class=\"pun\">&lt;<\/span><span class=\"pln\">T<\/span><span class=\"pun\">&gt; <\/span><span class=\"pun\">{ \n<\/span><span class=\"kwd\" style=\"color: #00008b;\">using <\/span><span class=\"typ\" style=\"color: #2b91af;\">Superclass<\/span><span class=\"pun\">&lt;<\/span><span class=\"pln\">T<\/span><span class=\"pun\">&gt;::<\/span><span class=\"pln\">b<\/span><span class=\"pun\">;\n<\/span><span class=\"kwd\" style=\"color: #00008b;\">using <\/span><span class=\"typ\" style=\"color: #2b91af;\">Superclass<\/span><span class=\"pun\">&lt;<\/span><span class=\"pln\">T<\/span><span class=\"pun\">&gt;::<\/span><span class=\"pln\">g<\/span><span class=\"pun\">;\n\n<\/span><span class=\"kwd\" style=\"color: #00008b;\">void<\/span><span class=\"pln\"> f<\/span><span class=\"pun\">() <\/span><span class=\"pun\">{<\/span><span class=\"pln\">\n    g<\/span><span class=\"pun\">();<\/span><span class=\"pln\">\n    b <\/span><span class=\"pun\">=<\/span><span class=\"lit\" style=\"color: #800000;\">3<\/span><span class=\"pun\">;\n<\/span><span class=\"pun\">}\n<\/span><span class=\"pun\">};<\/span><\/code><\/pre>\n<p style=\"color: #000000;\">Or by qualifying the name via the\u00c2\u00a0<code>this<\/code>\u00c2\u00a0pointer access:<\/p>\n<pre class=\"lang-cpp prettyprint prettyprinted\" style=\"color: #000000;\"><code><span class=\"kwd\" style=\"color: #00008b;\">template<\/span><span class=\"pun\">&lt;<\/span><span class=\"kwd\" style=\"color: #00008b;\">typename<\/span><span class=\"pln\"> T<\/span><span class=\"pun\">&gt; <\/span><span class=\"kwd\" style=\"color: #00008b;\">struct <\/span><span class=\"typ\" style=\"color: #2b91af;\">Subclass <\/span><span class=\"pun\">: <\/span><span class=\"kwd\" style=\"color: #00008b;\">public <\/span><span class=\"typ\" style=\"color: #2b91af;\">Superclass<\/span><span class=\"pun\">&lt;<\/span><span class=\"pln\">T<\/span><span class=\"pun\">&gt; <\/span><span class=\"pun\">{ \n<\/span><span class=\"kwd\" style=\"color: #00008b;\">void<\/span><span class=\"pln\"> f<\/span><span class=\"pun\">() <\/span><span class=\"pun\">{ \n<\/span><span class=\"kwd\" style=\"color: #00008b;\">this<\/span><span class=\"pun\">-&gt;<\/span><span class=\"pln\">g<\/span><span class=\"pun\">();\n<\/span><span class=\"kwd\" style=\"color: #00008b;\">this<\/span><span class=\"pun\">-&gt;<\/span><span class=\"pln\">b <\/span><span class=\"pun\">= <\/span><span class=\"lit\" style=\"color: #800000;\">3<\/span><span class=\"pun\">;\n<\/span><span class=\"pun\">}\n<\/span><span class=\"pun\">};<\/span><\/code><\/pre>\n<p style=\"color: #000000;\">Or, as you\u00e2\u20ac\u2122ve already noticed, by qualifying the full name.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>http:\/\/stackoverflow.com\/questions\/4010281\/accessing-protected-members-of-superclass-in-c-with-templates This can be amended by pulling the names into the current scope using\u00c2\u00a0using: template&lt;typename T&gt; struct Subclass : public Superclass&lt;T&gt; { using Superclass&lt;T&gt;::b; using Superclass&lt;T&gt;::g; void f() { g(); b =3; } }; Or by qualifying the name via<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-1083","post","type-post","status-publish","format-standard","hentry","category-cs"],"_links":{"self":[{"href":"https:\/\/blog.jungwon.kim\/index.php?rest_route=\/wp\/v2\/posts\/1083","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.jungwon.kim\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.jungwon.kim\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jungwon.kim\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jungwon.kim\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1083"}],"version-history":[{"count":0,"href":"https:\/\/blog.jungwon.kim\/index.php?rest_route=\/wp\/v2\/posts\/1083\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.jungwon.kim\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1083"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jungwon.kim\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1083"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jungwon.kim\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1083"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}