{"id":1131,"date":"2011-10-13T22:46:05","date_gmt":"2011-10-13T20:46:05","guid":{"rendered":"http:\/\/mariusbancila.ro\/blog\/?p=1131"},"modified":"2012-11-23T12:57:47","modified_gmt":"2012-11-23T10:57:47","slug":"cpp-winrt-and-partial-classes","status":"publish","type":"post","link":"https:\/\/mariusbancila.ro\/blog\/2011\/10\/13\/cpp-winrt-and-partial-classes\/","title":{"rendered":"C++, WinRT and Partial Classes"},"content":{"rendered":"<p>Partial classes are finally available to C++. Sort of. It&#8217;s not part of the new C++11 standard, it&#8217;s part of the C++\/CX language developed by Microsoft for targeting WinRT on Windows 8.<\/p>\n<p>Partial classes mean that you can define a class spanned across several files. Why is this great? Because it allows developers and automatic code generator tools (such as designers) to edit parts of the same class without interfering one with another. WinRT allows C++ developers to write UI in XAML. This could not have been possible without the support for partial classes. <\/p>\n<p>Partial classes:<\/p>\n<ul>\n<li>are available only for ref classes; native classes are not supported<\/li>\n<li>are introduced with the <strong>partial<\/strong> keyword in all definitions but one<\/li>\n<\/ul>\n<p>Here is an example:<\/p>\n<pre class=\"cpp\" name=\"code\">\r\n\/\/ foo.private.h\r\n#pragma once\r\n\r\npartial ref class foo \/\/ <- here the partial keyword is used\r\n{\r\nprivate:\r\n   int _id;\r\n   Platform::String^ _name;\r\n};\r\n<\/pre>\n<pre class=\"cpp\" name=\"code\">\r\n\/\/ foo.public.h\r\n#pragma once\r\n#include \"foo.private.h\"\r\n\r\nref class foo \/\/ <- partial keyword is not used here\r\n{\r\npublic:\r\n   int GetId();\r\n   Platform::String^ GetName();\r\n};\r\n<\/pre>\n<pre class=\"cpp\" name=\"code\">\r\n\/\/ foo.cpp\r\n#include \"pch.h\"\r\n#include \"foo.public.h\"\r\n\r\nint foo::GetId() {return _id;}\r\nPlatform::String^ foo::GetName {return _name;}\r\n<\/pre>\n<p>What happens when you add a new page to a C++ Metro style application? The wizard generates three files: a XAML file and a header and cpp file as the code behind. Let's say the page is called MainPage. In this case the three files are MainPage.xaml (code below is a dummy example), MainPage.xaml.h and MainPage.xaml.cpp.<\/p>\n<pre class=\"cpp\" name=\"code\">\r\n&lt;UserControl x:Class=\"DemoApp.MainPage\"\r\n    xmlns=\"http:\/\/schemas.microsoft.com\/winfx\/2006\/xaml\/presentation\"\r\n    xmlns:x=\"http:\/\/schemas.microsoft.com\/winfx\/2006\/xaml\"\r\n    xmlns:d=\"http:\/\/schemas.microsoft.com\/expression\/blend\/2008\"\r\n    xmlns:mc=\"http:\/\/schemas.openxmlformats.org\/markup-compatibility\/2006\"\r\n    mc:Ignorable=\"d\"\r\n    d:DesignHeight=\"768\" d:DesignWidth=\"1366\"&gt;\r\n\r\n    &lt;StackPanel Name=\"firstPanel\"&gt;\r\n        &lt;Button Name=\"firstButon\" \/&gt;\r\n    &lt;\/StackPanel&gt;\r\n    \r\n&lt;\/UserControl&gt;\r\n<\/pre>\n<pre class=\"cpp\" name=\"code\">\r\n\/\/\r\n\/\/ MainPage.xaml.h\r\n\/\/ Declaration of the MainPage.xaml class.\r\n\/\/\r\n\r\n#pragma once\r\n\r\n#include \"pch.h\"\r\n#include \"MainPage.g.h\"\r\n\r\nnamespace DemoApp\r\n{\r\n   public ref class MainPage\r\n   {\r\n      public:\r\n         MainPage();\r\n         ~MainPage();\r\n   };\r\n}\r\n<\/pre>\n<pre class=\"cpp\" name=\"code\">\r\n\/\/\r\n\/\/ MainPage.xaml.cpp\r\n\/\/ Implementation of the MainPage.xaml class.\r\n\/\/\r\n\r\n#include \"pch.h\"\r\n#include \"MainPage.xaml.h\"\r\n\r\nusing namespace Windows::UI::Xaml;\r\nusing namespace Windows::UI::Xaml::Controls;\r\nusing namespace Windows::UI::Xaml::Data;\r\nusing namespace DemoApp;\r\n\r\nMainPage::MainPage()\r\n{\r\n   InitializeComponent();\r\n}\r\n\r\nMainPage::~MainPage()\r\n{\r\n}\r\n<\/pre>\n<p>You can notice that the objects <em>firstPanel<\/em> and <em>firstButton<\/em> are not defined in the header for MainPage and second, MainPage.xaml.h includes MainPage.g.h. So what is this? This is a designer generated file, which together with MainPage.g.cpp completes the definition of the MainPage ref class. These files are not generated until you start a build. After you do that you can find them in the output folder (Debug or Release for instance). This is how they look:<\/p>\n<pre class=\"cpp\" name=\"code\">\r\n#pragma once\r\n\/\/------------------------------------------------------------------------------\r\n\/\/     This code was generated by a tool.\r\n\/\/\r\n\/\/     Changes to this file may cause incorrect behavior and will be lost if\r\n\/\/     the code is regenerated.\r\n\/\/------------------------------------------------------------------------------\r\n\r\nnamespace Windows {\r\n    namespace UI {\r\n        namespace Xaml {\r\n            namespace Controls {\r\n                ref class StackPanel;\r\n                ref class Button;\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\nnamespace DemoApp\r\n{\r\n    partial ref class MainPage : public Windows::UI::Xaml::Controls::UserControl, \r\n                                                     public Windows::UI::Xaml::Markup::IComponentConnector\r\n    {\r\n    public:\r\n        void InitializeComponent();\r\n        void Connect(int connectionId, Platform::Object^ pTarget);\r\n\r\n    private:\r\n        Windows::UI::Xaml::Controls::StackPanel^ firstPanel;\r\n        Windows::UI::Xaml::Controls::Button^ firstButon;\r\n    };\r\n}\r\n<\/pre>\n<pre class=\"cpp\" name=\"code\">\r\n\/\/------------------------------------------------------------------------------\r\n\/\/     This code was generated by a tool.\r\n\/\/\r\n\/\/     Changes to this file may cause incorrect behavior and will be lost if\r\n\/\/     the code is regenerated.\r\n\/\/------------------------------------------------------------------------------\r\n#include \"pch.h\"\r\n\r\n#include \"MainPage.xaml.h\"\r\n\r\n\r\nusing namespace Windows::Foundation;\r\nusing namespace Windows::UI::Xaml;\r\nusing namespace Windows::UI::Xaml::Controls;\r\nusing namespace Windows::UI::Xaml::Markup;\r\nusing namespace MyDemoApplication1;\r\n\r\nvoid MainPage::InitializeComponent()\r\n{\r\n    \/\/ Call LoadComponent on ms-resource:\/\/DemoApp\/Files\/MainPage.xaml\r\n    Windows::UI::Xaml::Application::LoadComponent(this, ref new Windows::Foundation::Uri(\"ms-resource:\/\/DemoApp\/Files\/MainPage.xaml\"));\r\n\r\n    \/\/ Get the StackPanel named 'firstPanel'\r\n    firstPanel = safe_cast&lt;Windows::UI::Xaml::Controls::StackPanel^&gt;(static_cast&lt;IFrameworkElement^&gt;(this)->FindName(\"firstPanel\"));\r\n\r\n    \/\/ Get the Button named 'firstButon'\r\n    firstButon = safe_cast&lt;Windows::UI::Xaml::Controls::Button^&gt;(static_cast&lt;IFrameworkElement^&gt;(this)->FindName(\"firstButon\"));\r\n\r\n}\r\n\r\nvoid MainPage::Connect(int connectionId, Platform::Object^ pTarget)\r\n{\r\n}\r\n<\/pre>\n<p>The following image illustrates the grouping of these files:<br \/>\n<img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"\/blog\/wp-content\/uploads\/2011\/10\/cpppartialclass.png\" title=\"C++\/CX partial classes\" class=\"alignnone\" width=\"771\" height=\"410\" \/><br \/>\nMainPage.xaml is a XAML files, which can be edited both by the designer or manually by the developer (basically with the designer is still the developer that models the UI). The other files are C++\/CX files. MainPage.xaml.h and MainPage.xaml.cpp are the files the developer writes, while MainPage.g.h and MainPage.g.cpp are edited by the designer. Do not modify the code in these files, because you could either mess up the designer, or all your changes would get lost when the file is regenerated.<\/p>\n<p><a href=\"http:\/\/www.codeproject.com\/script\/Articles\/BlogArticleList.aspx?amid=562357\" rel=\"tag\" style=\"display:none\">CodeProject<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Partial classes are finally available to C++. Sort of. It&#8217;s not part of the new C++11 standard, it&#8217;s part of the C++\/CX language developed by Microsoft for targeting WinRT on Windows 8. Partial classes mean that you can define a class spanned across several files. Why is this great? Because it allows developers and automatic &#8230; <a title=\"C++, WinRT and Partial Classes\" class=\"read-more\" href=\"https:\/\/mariusbancila.ro\/blog\/2011\/10\/13\/cpp-winrt-and-partial-classes\/\" aria-label=\"Read more about C++, WinRT and Partial Classes\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","advgb_blocks_editor_width":"","advgb_blocks_columns_visual_guide":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_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},"jetpack_post_was_ever_published":false},"categories":[7,289,21],"tags":[451,296,298,55,297,290,457],"class_list":["post-1131","post","type-post","status-publish","format-standard","hentry","category-c","category-winrt","category-xaml","tag-c","tag-ccx","tag-partial-classes","tag-visualstudio","tag-vs11","tag-winrt-2","tag-xaml"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"This article introduces partial classes available in C++\/CX.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Marius Bancila\"\/>\n\t<meta name=\"keywords\" content=\"c++,c++\/cx,xaml,partial classes,visual studio,vs11,winrt,visualstudio\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/mariusbancila.ro\/blog\/2011\/10\/13\/cpp-winrt-and-partial-classes\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Marius Bancila&#039;s Blog | About code. Mostly on C++\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"C++, WinRT and Partial Classes\" \/>\n\t\t<meta property=\"og:description\" content=\"This article introduces partial classes available in C++\/CX.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/mariusbancila.ro\/blog\/2011\/10\/13\/cpp-winrt-and-partial-classes\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2011-10-13T20:46:05+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2012-11-23T10:57:47+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"C++, WinRT and Partial Classes\" \/>\n\t\t<meta name=\"twitter:description\" content=\"This article introduces partial classes available in C++\/CX.\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2011\\\/10\\\/13\\\/cpp-winrt-and-partial-classes\\\/#article\",\"name\":\"C++, WinRT and Partial Classes\",\"headline\":\"C++, WinRT and Partial Classes\",\"author\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"\\\/blog\\\/wp-content\\\/uploads\\\/2011\\\/10\\\/cpppartialclass.png\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2011\\\/10\\\/13\\\/cpp-winrt-and-partial-classes\\\/#articleImage\"},\"datePublished\":\"2011-10-13T22:46:05+02:00\",\"dateModified\":\"2012-11-23T12:57:47+02:00\",\"inLanguage\":\"en-US\",\"commentCount\":3,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2011\\\/10\\\/13\\\/cpp-winrt-and-partial-classes\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2011\\\/10\\\/13\\\/cpp-winrt-and-partial-classes\\\/#webpage\"},\"articleSection\":\"C++, WinRT, XAML, C++, C++\\\/CX, partial classes, VisualStudio, VS11, winrt, XAML\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2011\\\/10\\\/13\\\/cpp-winrt-and-partial-classes\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/#listItem\",\"name\":\"IT\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/#listItem\",\"position\":2,\"name\":\"IT\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/#listItem\",\"name\":\"Software\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/#listItem\",\"position\":3,\"name\":\"Software\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/net\\\/#listItem\",\"name\":\".NET\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/#listItem\",\"name\":\"IT\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/net\\\/#listItem\",\"position\":4,\"name\":\".NET\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/net\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/net\\\/xaml\\\/#listItem\",\"name\":\"XAML\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/#listItem\",\"name\":\"Software\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/net\\\/xaml\\\/#listItem\",\"position\":5,\"name\":\"XAML\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/net\\\/xaml\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2011\\\/10\\\/13\\\/cpp-winrt-and-partial-classes\\\/#listItem\",\"name\":\"C++, WinRT and Partial Classes\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/net\\\/#listItem\",\"name\":\".NET\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2011\\\/10\\\/13\\\/cpp-winrt-and-partial-classes\\\/#listItem\",\"position\":6,\"name\":\"C++, WinRT and Partial Classes\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/net\\\/xaml\\\/#listItem\",\"name\":\"XAML\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#organization\",\"name\":\"Marius Bancila's Blog\",\"description\":\"About code. Mostly on C++\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/\",\"name\":\"Marius Bancila\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2011\\\/10\\\/13\\\/cpp-winrt-and-partial-classes\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a84dd2831d955c38355ddea55df4df260809b88f36408bc14fd4eab8f7f131c9?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Marius Bancila\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2011\\\/10\\\/13\\\/cpp-winrt-and-partial-classes\\\/#webpage\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2011\\\/10\\\/13\\\/cpp-winrt-and-partial-classes\\\/\",\"name\":\"C++, WinRT and Partial Classes\",\"description\":\"This article introduces partial classes available in C++\\\/CX.\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2011\\\/10\\\/13\\\/cpp-winrt-and-partial-classes\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\"},\"datePublished\":\"2011-10-13T22:46:05+02:00\",\"dateModified\":\"2012-11-23T12:57:47+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/\",\"name\":\"Marius Bancila's Blog\",\"description\":\"About code. Mostly on C++\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"C++, WinRT and Partial Classes","description":"This article introduces partial classes available in C++\/CX.","canonical_url":"https:\/\/mariusbancila.ro\/blog\/2011\/10\/13\/cpp-winrt-and-partial-classes\/","robots":"max-image-preview:large","keywords":"c++,c++\/cx,xaml,partial classes,visual studio,vs11,winrt,visualstudio","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/mariusbancila.ro\/blog\/2011\/10\/13\/cpp-winrt-and-partial-classes\/#article","name":"C++, WinRT and Partial Classes","headline":"C++, WinRT and Partial Classes","author":{"@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author"},"publisher":{"@id":"https:\/\/mariusbancila.ro\/blog\/#organization"},"image":{"@type":"ImageObject","url":"\/blog\/wp-content\/uploads\/2011\/10\/cpppartialclass.png","@id":"https:\/\/mariusbancila.ro\/blog\/2011\/10\/13\/cpp-winrt-and-partial-classes\/#articleImage"},"datePublished":"2011-10-13T22:46:05+02:00","dateModified":"2012-11-23T12:57:47+02:00","inLanguage":"en-US","commentCount":3,"mainEntityOfPage":{"@id":"https:\/\/mariusbancila.ro\/blog\/2011\/10\/13\/cpp-winrt-and-partial-classes\/#webpage"},"isPartOf":{"@id":"https:\/\/mariusbancila.ro\/blog\/2011\/10\/13\/cpp-winrt-and-partial-classes\/#webpage"},"articleSection":"C++, WinRT, XAML, C++, C++\/CX, partial classes, VisualStudio, VS11, winrt, XAML"},{"@type":"BreadcrumbList","@id":"https:\/\/mariusbancila.ro\/blog\/2011\/10\/13\/cpp-winrt-and-partial-classes\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog#listItem","position":1,"name":"Home","item":"https:\/\/mariusbancila.ro\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/#listItem","name":"IT"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/#listItem","position":2,"name":"IT","item":"https:\/\/mariusbancila.ro\/blog\/category\/it\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/#listItem","name":"Software"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/#listItem","position":3,"name":"Software","item":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/net\/#listItem","name":".NET"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/#listItem","name":"IT"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/net\/#listItem","position":4,"name":".NET","item":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/net\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/net\/xaml\/#listItem","name":"XAML"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/#listItem","name":"Software"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/net\/xaml\/#listItem","position":5,"name":"XAML","item":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/net\/xaml\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/2011\/10\/13\/cpp-winrt-and-partial-classes\/#listItem","name":"C++, WinRT and Partial Classes"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/net\/#listItem","name":".NET"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/2011\/10\/13\/cpp-winrt-and-partial-classes\/#listItem","position":6,"name":"C++, WinRT and Partial Classes","previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/net\/xaml\/#listItem","name":"XAML"}}]},{"@type":"Organization","@id":"https:\/\/mariusbancila.ro\/blog\/#organization","name":"Marius Bancila's Blog","description":"About code. Mostly on C++","url":"https:\/\/mariusbancila.ro\/blog\/"},{"@type":"Person","@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author","url":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/","name":"Marius Bancila","image":{"@type":"ImageObject","@id":"https:\/\/mariusbancila.ro\/blog\/2011\/10\/13\/cpp-winrt-and-partial-classes\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/a84dd2831d955c38355ddea55df4df260809b88f36408bc14fd4eab8f7f131c9?s=96&d=mm&r=g","width":96,"height":96,"caption":"Marius Bancila"}},{"@type":"WebPage","@id":"https:\/\/mariusbancila.ro\/blog\/2011\/10\/13\/cpp-winrt-and-partial-classes\/#webpage","url":"https:\/\/mariusbancila.ro\/blog\/2011\/10\/13\/cpp-winrt-and-partial-classes\/","name":"C++, WinRT and Partial Classes","description":"This article introduces partial classes available in C++\/CX.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/mariusbancila.ro\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/mariusbancila.ro\/blog\/2011\/10\/13\/cpp-winrt-and-partial-classes\/#breadcrumblist"},"author":{"@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author"},"creator":{"@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author"},"datePublished":"2011-10-13T22:46:05+02:00","dateModified":"2012-11-23T12:57:47+02:00"},{"@type":"WebSite","@id":"https:\/\/mariusbancila.ro\/blog\/#website","url":"https:\/\/mariusbancila.ro\/blog\/","name":"Marius Bancila's Blog","description":"About code. Mostly on C++","inLanguage":"en-US","publisher":{"@id":"https:\/\/mariusbancila.ro\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"Marius Bancila's Blog | About code. Mostly on C++","og:type":"article","og:title":"C++, WinRT and Partial Classes","og:description":"This article introduces partial classes available in C++\/CX.","og:url":"https:\/\/mariusbancila.ro\/blog\/2011\/10\/13\/cpp-winrt-and-partial-classes\/","article:published_time":"2011-10-13T20:46:05+00:00","article:modified_time":"2012-11-23T10:57:47+00:00","twitter:card":"summary","twitter:title":"C++, WinRT and Partial Classes","twitter:description":"This article introduces partial classes available in C++\/CX."},"aioseo_meta_data":{"post_id":"1131","title":"C++, WinRT and Partial Classes","description":"This article introduces partial classes available in C++\/CX.","keywords":[{"label":"C++","value":"C++"},{"label":"C++\/CX","value":"C++\/CX"},{"label":"XAML","value":"XAML"},{"label":"partial classes","value":"partial classes"},{"label":"Visual Studio","value":"Visual Studio"},{"label":"VS11","value":"VS11"},{"label":"WinRT","value":"WinRT"}],"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2021-03-18 21:13:02","updated":"2025-12-12 07:37:23","seo_analyzer_scan_date":null,"focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"author_meta":{"display_name":"Marius Bancila","author_link":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/"},"featured_img":null,"jetpack_publicize_connections":[],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Marius Bancila","author_link":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/"},"uagb_comment_info":3,"uagb_excerpt":"Partial classes are finally available to C++. Sort of. It&#8217;s not part of the new C++11 standard, it&#8217;s part of the C++\/CX language developed by Microsoft for targeting WinRT on Windows 8. Partial classes mean that you can define a class spanned across several files. Why is this great? Because it allows developers and automatic&hellip;","coauthors":[],"tax_additional":{"categories":{"linked":["<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/\" class=\"advgb-post-tax-term\">C++<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/windows-programming\/winrt\/\" class=\"advgb-post-tax-term\">WinRT<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/net\/xaml\/\" class=\"advgb-post-tax-term\">XAML<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">C++<\/span>","<span class=\"advgb-post-tax-term\">WinRT<\/span>","<span class=\"advgb-post-tax-term\">XAML<\/span>"]},"tags":{"linked":["<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/net\/xaml\/\" class=\"advgb-post-tax-term\">C++<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/net\/xaml\/\" class=\"advgb-post-tax-term\">C++\/CX<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/net\/xaml\/\" class=\"advgb-post-tax-term\">partial classes<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/net\/xaml\/\" class=\"advgb-post-tax-term\">VisualStudio<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/net\/xaml\/\" class=\"advgb-post-tax-term\">VS11<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/net\/xaml\/\" class=\"advgb-post-tax-term\">winrt<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/net\/xaml\/\" class=\"advgb-post-tax-term\">XAML<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">C++<\/span>","<span class=\"advgb-post-tax-term\">C++\/CX<\/span>","<span class=\"advgb-post-tax-term\">partial classes<\/span>","<span class=\"advgb-post-tax-term\">VisualStudio<\/span>","<span class=\"advgb-post-tax-term\">VS11<\/span>","<span class=\"advgb-post-tax-term\">winrt<\/span>","<span class=\"advgb-post-tax-term\">XAML<\/span>"]}},"comment_count":"3","relative_dates":{"created":"Posted 15 years ago","modified":"Updated 14 years ago"},"absolute_dates":{"created":"Posted on October 13, 2011","modified":"Updated on November 23, 2012"},"absolute_dates_time":{"created":"Posted on October 13, 2011 10:46 pm","modified":"Updated on November 23, 2012 12:57 pm"},"featured_img_caption":"","series_order":"","jetpack_shortlink":"https:\/\/wp.me\/pYNdv-if","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/1131","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/comments?post=1131"}],"version-history":[{"count":15,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/1131\/revisions"}],"predecessor-version":[{"id":1410,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/1131\/revisions\/1410"}],"wp:attachment":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/media?parent=1131"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/categories?post=1131"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/tags?post=1131"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}