社区
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;
}
...全文
418
5
打赏
收藏
如何解决 typename 的命名冲突?
struct C { typedef int it; }; template struct test { typedef T::it it; }; //struct T {}; //如果去掉注释则会造成混乱 int main() { test::it i=0; }
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用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 下通不过。
GraphQL Engine 数据源自定义(Source Customization):
解决
多数据源
命名
冲突
的完整指南
本指南基于 Hasura GraphQL Engine 的 `rfcs/source-customization.md` 设计文档,深入讲解**数据源级自定义(Source Customization)** 功能:当你在同一个 GraphQL Engine 实例上接入多个远程数据库时,如何通过 `customization` 配置(根字段
命名
空间/前后缀、类型名前缀后缀、
命名
约定)彻底消除表名或函
C++双冒号(::)的5种隐藏用法:从
命名
空间到全局函数调用
本文深入探讨了C++双冒号(::)操作符的五种高阶应用场景,包括
解决
第三方库
命名
冲突
、在模板元编程中访问嵌套类型、与友元函数配合实现特殊设计模式、跨平台开发中调用系统API的注意事项,以及在现代C++中与using声明的配合策略。这些技巧能帮助开发者编写更清晰、更健壮且易于维护的代码,有效提升大型项目的开发效率。
如何编译期标记一个标识符是一个类
class和
typename
的作用
C++基础(四)缺省参数,重载,函数模版,名字空间
一般情况下,函数调用时的实参个数应与形参相同,但为了更方便地使用函数,C++ 也允许定义具有缺省参数的函数,这种函数调用时,实参个数可以与形参不相同。缺省参数指在定义函数时为形参指定缺省值(默认值)。这样的函数在调用时,对于缺省参数,可以给出实参值,也可以不给出实参值。如果给出实参,将实参传递给形参进行调用,如果不给出实参,则按缺省值进行调用。缺省参数的函数调用:缺省实参并不一定是常量表达式,可以是任意表达式,甚至可以通过函数调用给出。如果缺省实参是任意表达式,则函数每次被调用时该表达式被重新求值。
模板编程中
typename
用法
模板编程
typename
用法
C语言
70,040
社区成员
243,237
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章