社区
工具平台和程序库
帖子详情
如何在类型推导中判断一个类是另一个类的子类?
wingfiring
2003-11-18 12:03:55
对于一个template,希望能够为某个类及其子类做特化。
怎么实现这样一个编译期的类型推导?
...全文
198
10
打赏
收藏
如何在类型推导中判断一个类是另一个类的子类?
对于一个template,希望能够为某个类及其子类做特化。 怎么实现这样一个编译期的类型推导?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
noirchloe
2003-11-18
打赏
举报
回复
说错了,C++设计新思维。。。。。。真丢人,哈哈
上面还可以使用std::type_info
noirchloe
2003-11-18
打赏
举报
回复
是《C++编程新思维》吧?
noirchloe
2003-11-18
打赏
举报
回复
sizeof()
dynamic_cast
合用
先比大小,然后创建指针,看是否能成功转换
wingfiring
2003-11-18
打赏
举报
回复
typedef int MyTYPE;
这是一个侵入型的设计,能不能有一个非侵入型的设计?
hpho
2003-11-18
打赏
举报
回复
<MEC> item 4
template<typename D, typename B>
class IsDerivedFrom1
{
class No{};
class Yes{No no[2];};
static Yes Test(B*);
static No Test(...);
public:
enum{Is=sizeof(Test(static_cast<D*>(0)))==sizeof(Yes)};
};
template<typename D, typename B>
class IsDerivedFrom2
{
static void Constraints(D* p)
{
B* pb = p;
pb = p;
}
protected:
IsDerivedFrom2(){void(*p)(D*)=Constraints;}
};
yjh1982
2003-11-18
打赏
举报
回复
<<C++泛型新思维>>
noirchloe
2003-11-18
打赏
举报
回复
sizeof()
Wolf0403
2003-11-18
打赏
举报
回复
如果要求是:对某个类为根的继承树上的所有类进行同样的一个特化,我有如下解决办法:用一个特定的鉴定参数。
示例代码:
class Base
{
public:
typedef int MyTYPE;
virtual void function() = 0 { cout << "Base" << endl;}
~Base(){cout << "~Base" <<endl;}
};
class D1 : public Base
{
public:
void function() { cout << "D1" << endl;}
virtual ~D1(){cout << "~D1" <<endl;}
};
template <class _Ty, typename _Id_Type = void>
struct S
{
void f()
{
cout << "Normal" << endl;
}
};
template <class _Ty>
struct S <_Ty, typename _Ty::MyTYPE>
{ // 如果对 _Ty::MyTYPE 用不同类型区分,可以对不同的继承树进行分别特化
void f()
{
cout << "Base" << endl;
}
};
int main(void)
{
S<int> s;
s.f();
S<Base, Base::MyTYPE> base;
base.f();
S<D1, D1::MyTYPE> d;
d.f();
}
yjh1982
2003-11-18
打赏
举报
回复
C++设计新思维有嘛
wingfiring
2003-11-18
打赏
举报
回复
dynamic_cast是运行期的类型识别,不是编译期的。
我想实现的是编译期的。
c++11模板
类
型
推导
规则
模板
类
型
推导
规则 ...哪怕你不准备学习使用GP,模板
类
型
推导
规则仍然是
一个
合格的c++工程师必备的知识,模板在现代c++开发
中
还是很常用的! c++的函数/
类
模板为我们提供了这样一种语义:可以针对多种不定的
类
c++
类
型
识别和
类
型
自动
推导
c++是一门静态编译语言,不支持动态
类
型
的获取,但在实际情况
中
,经常会遇到数据
类
型
的
判断
。什么是
类
型
识别?其实就是RTTI,运行时
类
型
识别,也就是得到数据的实际定义
类
型
。 二、基本的
类
型
识别 那么在c++
中
简单...
【C++11】
类
型
推导
C++11/14/17 学习的第二篇:模板
类
型
推导
、auto、decltype。
C++11之decltype
类
型
推导
(使用场景、
推导
四规则、cv限定符)
`decltype`算得上是`C++11`
中
类
型
推导
使用方式上最灵活的一种。虽然看起来它的
推导
规则比较复杂,有的时候跟`auto`
推导
结果还略有不同,但大多数时候,我们发现使用`decltype`还是自然而亲切的。一些细则的区别,读者...
C++获取基
类
指针所指
子
类
对象的
类
名
我们在程序
中
定义了
一个
基
类
,该基
类
有n个
子
类
,为了方便,我们经常定义
一个
基
类
的指针数组,数组
中
的每一项指向都指向
一个
子
类
,那么在程序
中
我们如何
判断
这些基
类
指针是指向哪个
子
类
呢? 关键字 typeid,有关此...
工具平台和程序库
24,860
社区成员
27,333
社区内容
发帖
与我相关
我的任务
工具平台和程序库
C/C++ 工具平台和程序库
复制链接
扫一扫
分享
社区描述
C/C++ 工具平台和程序库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章