社区
C语言
帖子详情
如何解决 typename 的命名冲突?
anrxhzh
2002-07-29 12:09:12
struct C {
typedef int it;
};
template <typename T>
struct test {
typedef T::it it;
};
//struct T {}; //如果去掉注释则会造成混乱
int main()
{
test<C>::it i=0;
}
...全文
380
5
打赏
收藏
如何解决 typename 的命名冲突?
struct C { typedef int it; }; template struct test { typedef T::it it; }; //struct T {}; //如果去掉注释则会造成混乱 int main() { test::it i=0; }
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
prototype
2002-07-29
打赏
举报
回复
typedef typename t::it it;
> //struct T {}; //如果去掉注释则会造成混乱
don't know what you exactly mean here. :( what do you refer to by '混乱'?
zheng_can
2002-07-29
打赏
举报
回复
最最简单的解决方法就是不要这么命名
这么短的类名是不被提倡的
anrxhzh
2002-07-29
打赏
举报
回复
使用名字空间也不好解决。
我现在明白为什么在C++库的编写规范中,所有的参数类型名字都为_[A-Z][^_].*,所有的用户类型名字都为[a-z].*了。
tomPeakz
2002-07-29
打赏
举报
回复
我对付这种命名冲突的办法 - namespace
namespace AAA{
typedef int it;
}
namespace BBB{
template <typename T>
struct test {
typedef typename T::it it;
};
}
using namespace AAA;
using namespace BBB;
//or AAA::it BBB::it
划分名字空间
你可以试试。
anrxhzh
2002-07-29
打赏
举报
回复
谢谢 prototype(原型)。
不好意思,我没有表达清楚。实际上我又掉进编译器的陷阱了,如果去掉注释,Microsoft Visual C++ 6.0 就会报错,这是由参数类型T 和全局类型T同名而引起的。我现在已经被这种陷阱搞地麻木了:-)
严格的讲,应该这样写:
struct C {
typedef int it;
};
template <typename T>
struct test {
typedef typename T::it it;
};
struct T {};
int main()
{
test<C>::it i=0;
}
在 Dev-C++ 4.9.4.1 下编译通过。
在 VC 6.0 下通不过。
C++
命名
空间5种常见用法实例解析
C++
命名
空间是编程语言中一个非常重要的特性,它的引入主要为了
解决
代码中的名称
冲突
问题,提升代码的可读性和可维护性。在本文中,我们将深入探讨C++
命名
空间的五种常见用法,并通过实例解析来帮助理解。 首先,**...
NET
命名
规范 PDF
**5.4 避免关键字
冲突
** - 尽量避免使用与编程语言中的关键字相同的标识符,即使大多数语言支持将关键字用作普通标识符。 通过遵循这些
命名
规范,不仅可以提高代码的可读性和一致性,还能增强代码的可维护性,从而...
asp.net AJAX注册类
以上所述的知识点,涉及了*** AJAX在客户端的类和
命名
空间注册机制,这不仅仅是为了
解决
命名
冲突
问题,更是为客户端编程提供了类似服务器端的编程体验,允许开发者在浏览器中执行更复杂和组织良好的脚本编程。
Thinking in C++(B)
4. **
命名
空间**:
命名
空间是C++中
解决
命名
冲突
的一种方法。它可以将一组相关的标识符封装在一起,避免不同模块之间相同名字的
冲突
。例如,`std::cout`就是来自
命名
空间`std`的输出流对象,使用`using namespace std...
volaitle、namespace、C++11的auto和decltype1
接下来是`namespace`,它用于
解决
命名
冲突
的问题。在大型项目中,不同模块可能使用相同的标识符,导致
命名
冲突
。通过创建
命名
空间,我们可以将相关的标识符组织在一起,避免名称
冲突
。例如: ```cpp namespace math...
C语言
70,020
社区成员
243,264
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章