uwp — не ошибка члена, когда C ++ winrt Page Class используется вместе со страницей XAML

Я создаю простую программу ActionTracker. У меня есть очень простой файл XAML:

// файл XAML

 <Page
x:Class="ActionTracker_V3.ActionDetails"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="using:ActionTracker_V3"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"mc:Ignorable="d"Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

<Grid>
<TextBox Text="{x:Bind temp, Mode=OneWay}"></TextBox>
</Grid>
</Page>

Резервный класс времени выполнения определяется как:

// файл IDL

namespace ActionTracker_V3
{
runtimeclass ActionDetails : Windows.UI.Xaml.Controls.Page
{
ActionDetails();
String temp;
}
}

Связанные файлы * .h и * .cpp показаны ниже:

#include "ActionDetails.g.h"
namespace winrt::ActionTracker_V3::implementation
{
struct ActionDetails : ActionDetailsT<ActionDetails>
{
ActionDetails();

hstring temp();
void temp(hstring const& value);
};
}

namespace winrt::ActionTracker_V3::factory_implementation
{
struct ActionDetails : ActionDetailsT<ActionDetails,    implementation::ActionDetails>
{};
}

Файл * .cpp:

#include "pch.h"#include "ActionDetails.h"
namespace winrt::ActionTracker_V3::implementation
{
ActionDetails::ActionDetails()
{
InitializeComponent();
}

hstring ActionDetails::temp()
{
throw hresult_not_implemented();
}

void ActionDetails::temp(hstring const& value)
{
throw hresult_not_implemented();
}
}

Однако, когда я компилирую эти файлы, я получаю следующие ошибки:

Error   C2039   'ActionDetails': is not a member  of 'winrt::ActionTracker_V3::implementation'  ActionTracker_V3    c:\users\kurian.kattukaren\source\repos\actiontracker_v3\actiontracker_v3\generated files\xamltypeinfo.g.cpp

Я не знаю, что является причиной ошибки. Я не смог найти ничего плохого в объявлении класса. Может кто-нибудь указать, где я иду не так?

0

Решение

В соответствии с шагами по устранению неполадок, перечисленными Вот:

Компилятор C ++ выдает ошибку «Implements_type»: не является членом какого-либо прямого или косвенного базового класса «».

Это может произойти, когда вы вызываете make с именем без определения пространства имен вашего типа реализации (например, MyRuntimeClass), и вы не включили заголовок этого типа. Компилятор интерпретирует MyRuntimeClass как спроецированный тип. Решение состоит в том, чтобы включить заголовок для вашего типа реализации (например, MyRuntimeClass.h).

Я скопировал вышеупомянутую информацию, просто хочу сказать, что ваша проблема может из-за того, что компилятор не может найти правильный заголовок из вашего проекта. Но это не значит, что у вашего кода есть какие-либо проблемы. Возможно, что некоторые настройки не верны, или это просто проблема Visual Studio. Без вашего проекта я тоже не могу быть уверен. Если это всегда происходит в вашей среде, и вы уверены, что ваш код верен, сообщите об этом прямо из Visual Studio-> О программе-> Отправить отзыв на форуме сообщества разработчиков.

В любом случае, в любое время, если у вас возникла странная ошибка в вашем проекте, вы можете сначала попробовать новый проект в качестве теста.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]