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