{"id":170,"date":"2007-02-09T08:45:59","date_gmt":"2007-02-09T07:45:59","guid":{"rendered":"http:\/\/minibrain.wordpress.com\/2007\/02\/09\/visual-c-2005-compiler-error-c3767-candidate-function-not-accessable\/"},"modified":"2007-02-09T08:45:59","modified_gmt":"2007-02-09T07:45:59","slug":"visual-c-2005-compiler-error-c3767-candidate-function-not-accessable","status":"publish","type":"post","link":"https:\/\/abramowitsch.de\/blog\/?p=170","title":{"rendered":"Visual C++ 2005: Compiler error C3767 &#8222;Candidate Function Not Accessable&#8220;"},"content":{"rendered":"<p>Ich arbeite schon seit einer Weile an einem InterOp-Projekt, bei dem nativer C++-Code bzw. eine ganze Bibliothek von .NET (C#) aus verf\u00fcgbar gemacht werden soll.<\/p>\n<p><!--more--><br \/>\nIch ich ganze Klassenhierarchien und Baumstrukturen wrappen muss, bietet sich C++\/CLI nahezu an, um einen Wrapper zu schreiben. Nachdem ich die ersten Klassen gewrappt hatte, bekam ich einen merkw\u00fcrdigen Kompiler-Fehler C3767 &#8222;Candidate Function Not Accessable&#8220; angezeigt. Zuerst konnte ich mir nicht recht helfen, doch dann (nachdem ich zahlreiche Newsgroups durchforstete) wurde es mir klar! Die Klassen im nativen C++-Code besitzen nicht den Zugriffsmodifier <strong>public<\/strong> und sind also by default private und somit f\u00fcr mich (bzw. den Compiler) nicht sichtbar. Wenn ich also &#8222;public&#8220; vor den &#8222;class&#8220; im Header-File schreibe, dann kommt der Fehler nicht mehr. Sch\u00f6n f\u00fcr mich, schlecht f\u00fcr meine Kollegen, denn der Code kompiliert jetzt nicht mehr bei denen.<\/p>\n<p>Mein erster <strong>Workaround war ein Makro <\/strong>einzuf\u00fchren, welches <strong>nur bei aktivierter \/CLR-Kompilieroption das public <\/strong>einf\u00fcgt. Das funktionierte soweit ganz gut, bis ich herausfand, dass es noch ein #pragma-statement namens <strong>#pragma make_public(Namespace::Klassenname)<\/strong> gab. Damit konnte ich die Pr\u00e4prozessor-Makros f\u00fcr meinen Workaround wegschmei\u00dfen \ud83d\ude42 Aber es tut.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ich arbeite schon seit einer Weile an einem InterOp-Projekt, bei dem nativer C++-Code bzw. eine ganze Bibliothek von .NET (C#) aus verf\u00fcgbar gemacht werden soll.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[3,20],"tags":[],"class_list":["post-170","post","type-post","status-publish","format-standard","hentry","category-net","category-visual-studio-net"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p3Ug90-2K","_links":{"self":[{"href":"https:\/\/abramowitsch.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/170","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/abramowitsch.de\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/abramowitsch.de\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/abramowitsch.de\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/abramowitsch.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=170"}],"version-history":[{"count":0,"href":"https:\/\/abramowitsch.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/170\/revisions"}],"wp:attachment":[{"href":"https:\/\/abramowitsch.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=170"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/abramowitsch.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=170"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/abramowitsch.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=170"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}