Mar*_*sen 16 c++ java type-systems
我在想,C++或Java是否有办法做这样的事情
Interface IF1{
....
};
Interface IF2{
....
};
function f(Object o : Implements IF1, IF2){
...
}
Run Code Online (Sandbox Code Playgroud)
意味着允许您需要实现接口的类型系统.
Fra*_*ulo 28
你可以用Java做到这一点:
public <I extends IF1 & IF2> void methodName(I i){
....
}
Run Code Online (Sandbox Code Playgroud)
这样你就强迫我实现你的两个接口,否则它甚至都不会编译.
iam*_*ind 11
在C++中,我们可以使用std::is_base_of<IF1, Derived>.这必须与实际派生类型和基本类型一起使用,并且在tempaltes 的帮助下易于使用.
template<typename T>
void f (T obj)
{
static_assert(is_base_of<IF1,T>::value && is_base_of<IF2,T>::value,
"Error: Not implementing proper interfaces.");
...
}
Run Code Online (Sandbox Code Playgroud)
如果T(派生class)未落实IF1和IF2,然后断言将在编译时失败.
| 归档时间: |
|
| 查看次数: |
1833 次 |
| 最近记录: |