首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

两个C++的致命有关问题

2012-05-11 
两个C++的致命问题1,C++如何实现反射? 即在客户端未知的情况下,如何在客户端将基类指针准确转换成其new的

两个C++的致命问题
1,C++如何实现反射? 即在客户端未知的情况下,如何在客户端将基类指针准确转换成其new的子类指针。
2,C++的权限是实例化的,需指定public,private, protected. 如何让C++的权限定义成规则? 例如说指定某一类模板族的实例都可以是友元。

[解决办法]
1. C++ 目前还没有标准的reflection,需要自己实现或者用第三方库。

2. g++ 4.6.3、clang 3.1都可以声明友元类模版:

C/C++ code
template<typename T, typename U>class F{public:    void foo(const T &o) const { o.foo(); }    void foo(void *p) const { reinterpret_cast<U>(p)->foo(); }};class C{    template<typename T, typename U> friend class F;    void foo() const {}};int main(){    C c;    F<C, C*> f;    f.foo(c);    f.foo(&c);    return 0;} 

热点排行