社区
工具平台和程序库
帖子详情
如何在类型推导中判断一个类是另一个类的子类?
wingfiring
2003-11-18 12:03:55
对于一个template,希望能够为某个类及其子类做特化。
怎么实现这样一个编译期的类型推导?
...全文
191
10
打赏
收藏
如何在类型推导中判断一个类是另一个类的子类?
对于一个template,希望能够为某个类及其子类做特化。 怎么实现这样一个编译期的类型推导?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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是运行期的类型识别,不是编译期的。
我想实现的是编译期的。
机器学习--线性回归数学
推导
视频教学
任务作业: 设计并实现
一个
三层架构的员工管理系统。要求: 1、数据库及其表自行设计,遵循数据库及表设计的一般命名规则 2、要求有管理员的登录功能及对员工信息的增删改查 3、功能的实现严格采用三层架构的设计...
c++11模板
类
型
推导
规则
模板
类
型
推导
规则 当你准备迫切地想要了解本文的内容时,说明你对c++的了解已经比较深入了!本文将试图介绍c++11之后的模板
类
型
推导
机制是怎样的(加入右值引用概念),诚然,模板
类
型
推导
规则是了解GP(泛型编程,Generic Programming)的基础和前提,但只会这个还远远不够,泛型编程对我来说还是
一个
触不可及的范式;哪怕你不准备学习使用GP,模板
类
型
推导
规则仍然是
一个
合格的c++工程师必备的知识,模板在现代c++开发
中
还是很常用的! c++的函数/
类
模板为我们提供了这样一种语义:可以针对多种不定的
类
C++11之decltype
类
型
推导
(使用场景、
推导
四规则、cv限定符)
`decltype`算得上是`C++11`
中
类
型
推导
使用方式上最灵活的一种。虽然看起来它的
推导
规则比较复杂,有的时候跟`auto`
推导
结果还略有不同,但大多数时候,我们发现使用`decltype`还是自然而亲切的。一些细则的区别,读者可以在使用时遇到问题再返回查验。而下面的追踪返回
类
型
的函数定义,则将融合`auto`、`decltype`,将`C++11`
中
的泛型能力提升到更高的水平。
【C++11】
类
型
推导
C++11/14/17 学习的第二篇:模板
类
型
推导
、auto、decltype。
再议
类
型
推导
在前面的理论部分,讲过静态
类
型
推导
,不过当时只是提到了概念,主要是为了证明这玩意是比较复杂的,之所以有必要再议一下,是因为这个对larva的效率还是挺重要的,事实上我只做了
一个
很简单的
推导
算法,就将larva在dhrystone上的速度提了一倍;另一方面也是之前讲的比较简略,再深入一下 前面讨论反向运算的时候提到,常见计算机的CPU只能直接处理整数和浮点计算(地址不在这次讨论范围),不考
工具平台和程序库
24,860
社区成员
27,341
社区内容
发帖
与我相关
我的任务
工具平台和程序库
C/C++ 工具平台和程序库
复制链接
扫一扫
分享
社区描述
C/C++ 工具平台和程序库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章