Как создать синглтон в c ++ winrt - PullRequest
0 голосов
/ 05 апреля 2020

Как мы можем создать класс с одним тоном в c ++ / winrt?

Я сделал это в c ++ / cx. Почему не работает на c ++. Winrt?

Как я пытаюсь это сделать:

IDL:

import "BindableBase.idl";
namespace WinrtApp2
{
    [bindable]
    [default_interface]
    runtimeclass MainViewModel : BindableBase
    {
        MainViewModel();
        String MyProperty;
    }
}

Заголовок:

namespace winrt::WinrtApp2::implementation
{
    struct MainViewModel : MainViewModelT<MainViewModel>
    {
    public:
        static MainViewModel Instance();

    private:
        MainViewModel(){};
    };
}

Cpp:

MainViewModel MainViewModel::Instance()
{
 static MainViewModel instance = MainViewModel();
 return instance;
}

Ошибка компилятора:

WinrtApp2\Generated Files\winrt\base.h(7402,5): error C2248: 'winrt::WinrtApp2::implementation::MainViewModel::MainViewModel': cannot access private member declared in class 'winrt::WinrtApp2::implementation::MainViewModel'
WinrtApp2\MainViewModel.h(16): message : see declaration of 'winrt::WinrtApp2::implementation::MainViewModel::MainViewModel'
WinrtApp2\MainViewModel.h(9): message : see declaration of 'winrt::WinrtApp2::implementation::MainViewModel'
WinrtApp2\Generated Files\MainViewModel.g.cpp(10): message : see reference to function template instantiation 'auto winrt::make<winrt::WinrtApp2::implementation::MainViewModel,>(void)' being compiled

Документация c ++ / winrt очень плоха для понимания / поиска чего-либо.

...