windows-runtime – 公共成员的签名包含本机类型
我是visual c的新手,我有以下代码:
ref class Book sealed { public: Book(std::string title,std::string author,int year); void setTitle(std::string title); std::string getTitle() const; int getYear() const; void setYear(int year); void setAuthor(std::string author_); std::string getAuthor() const; private: std::string title_; std::string author_; int year_; }; 当我尝试编译它时,我收到以下错误: {ctor}公共成员的签名包含本机类型.我想这是因为我使用的是std :: string而不是Platform :: String,我该如何解决? 解决方法
您的ref类本身并未标记为public,因此您似乎只在内部(作为源)从其他C使用此类,并且不打算将其发布到其他WinRT使用者.
如果是这种情况,您可以将构造函数设置为internal而不是public,这将在此组件中公开,并且在外部不可见.如果这是你的预期用途,那么它可以只是一个普通的“课堂”而不是“参考课程”.如果您确实希望在WinRT边界使用它,但您不需要构造函数,则可以将其设置为“公共引用类”并将构造函数标记为“内部”.有点取决于您的情况. 如果您希望将此类设置为public并且具有可在WinRT边界上使用的公共构造函数(以便它可以被C#/ VB / JS使用),那么您需要使用WinRT类型(例如Platform :: String) ).在你的类中,存储类型仍然可以是std :: string(虽然我建议使用std :: wstring,否则你需要进行从宽到窄的转换,因为Platform :: Strings是宽字符串). 要在这两种类型之间进行转换,请使用Platform :: String :: Data()来获取底层的wchar_t *,您可以使用它来构造std :: wstring.类似地,Platform :: String有一个构造函数,它接受一个wchar_t *(你可以从std :: wstring :: c_str()获得). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 如何在Microsoft Excel中打开以空格分隔的文件?
- win10专业版/教育版永久数字权利激活密钥和教程
- 给定Windows上的PID – 如何找到执行它的命令行指令?
- windows-8 – Windows应用商店应用程序的图表(XAML C#)
- Win Server 2008 r2上的IIS 7.5使用AppPoolCredentials
- 命令行 – 从DOS命令行关闭正在运行的应用程序
- 支持具有全局数据的插件DLL的多个实例
- 升级到Windows 10后,批处理文件中的powershell.exe调用无法
- 如何在我登录的Windows计算机上查看我的用户角色?
- exchange-2010 – 将电子邮件从Exchange(2010 / SBS2011)迁