把接口和实现分开的方法.

假定接口类为A,而将实现放在Impl类中,由于非指针类型成员变量必须和该成员类声明放在一起,而指针类型可以不这样做,因此必须将Impl成员指针作为A的成员变量,代码如下

Impl.h 实现类的头/实现文件,可以看到里面实现了方法operator()
class Impl
{
    
public:
    
void operator()(int nData)
    
{
        
    }

}
;
A.h 接口类头文件,不须要包含实现类的头文件
class Impl;

class A
{
    
public:
        A();
        
        
~A();
        
        
void operator()(int nData);
        
    
private:
        Impl 
* impl;
}
;
A.cpp 接口类的实现,需要包含实现类的头文件
#include "A.h"
#include 
"Impl.h"

A::A()
{
    impl 
= new Impl;
}


A::
~A()
{
    delete impl;
}


void A::operator()(int nData)
{
    (
*impl)(nData);
}



Main.cpp 主函数,只需要包含接口类头文件即可,完全不需要知道实现类的任何东西
#include "A.h"

void main()
{
    A a;
    
    a(
0);
}

Powered by Jekyll and Theme by solid

本站总访问量