#include <iostream> template <class T> class CTestPtrBase { public: operator T*() const{ return p; } //可以使得CTestPtrBase对象当做一个T*指针使用 T* operator->() const { return p; } T* p; }; //------------------------------------------ class ITestA { public: void test() { } }; class ITestB : public ITestA { }; //---------------------------------------------------------- void Test(ITestA* t) { } //--------------------------------- int main() { CTestPtrBase<ITestA> ttt; Test(ttt); // 如果不重载operator T*() const,那么必须写成Test(&ttt) ttt->test(); return 0; }
|
|