尽可能使用外部类初始化内部类?

时间:2016-05-14 15:20:13

标签: c++ instantiation inner-classes outer-classes

今天我试图在将外部类传递给它时实现内部类,而我在外部类的命名空间中: 我使用的是Visual Studo 2013。 代码如下所示:(观看^^)

class Base
{
public:
    virtual void foo(){ cout << "foo" };
};

class object
{
    class Derived : public Base
    {
        object& o;
    public:
        Derived(object& o) : o(o){}
        virtual void foo(){ cout << "bar" };
    }derived(*this);
//          ^^^^^^
};

在我测试的情况下,继承某事的派生类对此示例的任何内容都没有影响。 (仅出于上下文原因,见下文)

^^ 点,我收到错误:  没有合适的默认构造函数

Intellisense警告我,它需要类型规范。 我也试过传递一个指针(当然我也改变了建构者)但同样的反应。 对于protokoll,我现在尝试了很多变化和研究,但我无法找出对我的问题的明确答案。

&#34;这是&#34;指针在这里不可用?那时我怎么能通过自己呢?

  

对于背景(仅在您感兴趣时):

     

我尝试在应用程序中编写用于键绑定的代码。通过   键的功能我使用&#34;接口&#34;类KeyFunction(Base   类似于它。)

     

我现在想给类(对象)提供声明它的可能性   拥有KeyFunction(派生),更重要的是,传递资源(对象)   用它,功能可以对它们起作用(因为我只能   使用void指针,因为它们稍后存储在数组中   绑定)我已经用其他代码实现了这个任务,我认为   但是要在这里发帖很久。通过实验我偶然发现了   这个问题。

1 个答案:

答案 0 :(得分:2)

您的编译错误与您的类层次结构无关,但简单的事实是,这不是您构建类实例的方式。

尝试实际声明一个类成员和一个类构造函数:

class Base
{
public:
    virtual void foo(){ }
};

class object
{
    class Derived : public Base
    {
        object& o;
    public:
        Derived(object& o) : o(o){}
        virtual void foo(){ }
    };

    Derived derived;

    object() : derived(*this)
    {
    }
};