读书人

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

发布时间: 2012-05-11 12:55:37 作者: rapoo

两个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;} 

读书人网 >C++

热点推荐