在C/C++LI中创建托管类和名称空间时出现问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在C/C++LI中创建托管类和名称空间时出现问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1460字,纯文字阅读大概需要3分钟。
内容图文
![在C/C++LI中创建托管类和名称空间时出现问题](/upload/InfoBanner/zyjiaocheng/654/9786d8eae2bd4719abd14b5cd849d79f.jpg)
我在用C/C++LI创建带有名称空间的托管类时遇到问题.
我要执行以下操作:
#pragma once
#include "abc.h"
#ifdef _MANAGED
#using <system.dll>
using namespace System;
using namespace System::IO;
using namespace System::Collections::Generic;
using namespace System::Globalization;
#endif
namespace Animals
{
public ref class Pets
{
Pets::Pets(){}
};
}
我有几个不同的问题:
A)当我将此代码放入.cpp文件时,它可以正常编译.但是,似乎名称空间无法正常工作(请参阅我创建的这个问题:Namespace not recognized in C++/CLI)列出的唯一答案是,我必须在头文件中声明类/名称空间.但这是一个问题,因为..
B)编译器将公共引用类Pets放在头文件中时会抱怨.它说必须有语法错误.
智能感知错误:
期望一个声明
其他错误:
‘{‘:缺少函数标头(旧式的正式列表?)
语法错误:“公共”
我似乎找不到任何能同时显示标头和cpp文件的C/C++LI示例.
所以我的问题是:如何使托管类和名称空间都能按预期工作? (即我在做什么错?)
请让我知道是否需要提供更多信息.
预先感谢您的时间和耐心:)
解决方法:
在头文件中,应该只包含前向声明.
// abc.h
#pragma once
namespace Animals
{
public ref class Pets
{
Pets(); // forward declaration
// Pets::Pets is redundant and wrong, because you are inside
// the class Pets
};
}
// abc.cpp
#include "abc.h"
#ifdef _MANAGED
#using <system.dll>
using namespace System;
using namespace System::IO;
using namespace System::Collections::Generic;
using namespace System::Globalization;
#endif
namespace Animals
{
Pets::Pets() {} // implementation
// Now Pets::Pets() is right, because you dont write the class... wrapper again.
}
内容总结
以上是互联网集市为您收集整理的在C/C++LI中创建托管类和名称空间时出现问题全部内容,希望文章能够帮你解决在C/C++LI中创建托管类和名称空间时出现问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。