繁体   English   中英

与XAML页面一起使用的C ++ winrt页面类不是成员错误

[英]Not a member error when C++ winrt Page Class used along with XAML page

我正在构建一个简单的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        

我不知道是什么原因引起的错误。 我在类声明中找不到任何错误。 有人可以指出我要去哪里了吗?

根据此处列出的故障排除步骤:

C ++编译器产生错误“'implements_type':不是”的任何直接或间接基类的成员。

当您使用实现类型的名称空间-非限定名称(例如MyRuntimeClass)调用make时,并且没有包括该类型的标头时,可能会发生这种情况。 编译器将MyRuntimeClass解释为投影类型。 解决方案是包括您的实现类型的标头(例如MyRuntimeClass.h)。

我复制了以上信息,只是想说您的问题可能是由于编译器无法从您的项目中找到正确的标头。 但这并不意味着您的代码有任何问题。 某些设置可能不正确,或者仅仅是Visual Studio的问题。 没有您的项目,我也无法确定。 如果在您的环境中总是发生这种情况,并且您确定代码正确,请直接从Visual Studio->关于->将反馈发送给开发者社区论坛。

无论如何,如果您的项目出现固定错误,则可以先尝试将新项目作为测试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM