【发布时间】:2011-04-27 05:37:09
【问题描述】:
可能重复:
Is it possible to write a C++ template to check for a function's existence?
假设有 2 个类:
struct A{ int GetInt(){ return 10; } };
struct B{ int m; };
我想在下面的函数中使用 A 或 B 类型的对象
tempate< typename T >
int GetInt( const T & t )
{
//if it's A, I'll call: return t.GetInt();
//if its' B, I'll call: return t.m;
}
现在,因为有一大堆类,有些包含GetInt(),有些没有,我不想为每种类型写专门化,我只想通过'包含GetInt( ) 或不在编译时',我应该怎么做?
【问题讨论】:
-
也许你应该研究一下虚函数和多态性。
-
除非您假设您的非
GetInt实例化类都有一个名为int的成员m,否则我不明白如何在没有专门化的情况下扩展它。你的函数模板的默认实现是什么? -
你不能让这个函数工作,因为
GetInt不是const,但t是。
标签: c++ compile-time member-functions