在C++中记录接口的位置?

mor*_*ort 1 c++ interface

我有更多的Java背景,因此让我用Java示例来说明.假设存在以下代码:

interface iFoo {
    /* Do foo */
    void foo();
    /* Do bar */
    void bar();
}

class A implements iFoo {
    void foo() {};
    void bar() {};
}

class B<iFoo> {
    iFoo foo;
    B() {
        foo.foo();
        foo.bar(); 
    } 
} 

//somewhere in the code:
B b = new B<A>();
Run Code Online (Sandbox Code Playgroud)

现在,如果我想实现一个可以用作B的类型参数的类C,我知道C必须实现iFoo.因此,我去那里并按照合同约定,所有必要的文档将在那里(我需要实现哪些方法,什么是签名加内联文档.

在C++中,它看起来像这样(如果我错了,请纠正我):

class A {
public:
     void foo();
     void bar();
}

template<class T>
class B {
public:
    T foo;
    B() {
        foo.foo();
        foo.bar(); 
    } 
} 

//somewhere in the code:
B *b = new B<A>();
Run Code Online (Sandbox Code Playgroud)

哪个是记录B对T的期望的最佳位置?或者反过来说,如果我有A和B并希望实现一个作为类型参数传递给B的类C,我如何找出B对T的期望?上面当然是一个非常简单的例子,想象一下更大更复杂的类.

Som*_*ude 5

在C++中,纯抽象接口类看起来像这样:

struct IFoo
{
    virtual void foo() = 0;
    virtual void bar() = 0;

    virtual ~IFoo() {}
};
Run Code Online (Sandbox Code Playgroud)

然后你像普通的类一样继承它

class A : public IFoo
{
public:
    void foo();
    void bar();
};
Run Code Online (Sandbox Code Playgroud)