今天我试图在将外部类传递给它时实现内部类,而我在外部类的命名空间中: 我使用的是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指针,因为它们稍后存储在数组中 绑定)我已经用其他代码实现了这个任务,我认为 但是要在这里发帖很久。通过实验我偶然发现了 这个问题。
答案 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)
{
}
};