可以用外部类初始化内部类
Initialize Inner Class with outer class this possible?
今天,当我将外部类传递给一个内部类时,当我在外部类的命名空间中时,我试图实例化它:我使用的是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,我现在尝试了很多变体和研究,但我无法找到一个明确的答案来解决我的问题。
"this"指针在这里不可用吗?在这一点上,我怎么能超越自己呢?
背景(仅当您感兴趣时):
我试图在应用程序中编写用于键绑定的代码。通过键的函数i使用KeyFunction(Base)类的"接口"类与之相似)。
我现在想让类(对象)有可能声明它拥有KeyFunction(派生),更重要的是,传递资源(对象)有了它,在某种程度上,函数可以在它们上工作(因为我只能使用void指针,因为它们稍后会存储在绑定)我已经用其他代码完成了这项任务,我认为不过,我很想在这里发帖。通过试验,我偶然发现这个问题。
编译错误与类层次结构无关,而是与一个简单的事实有关,即构建类实例不是这样的。
尝试实际声明一个类成员和一个类构造函数:
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)
{
}
};
相关文章:
- 内联映射初始化的动态atexit析构函数崩溃
- 内联静态数据的初始化
- 如何在 C++ 的外部类构造函数中初始化嵌套类成员
- 结构内向量的初始化
- 有没有办法使用该类的构造函数初始化另一个类的私有部分内的对象数组?
- 如何将枚举类转发声明为模板化类的内部类?
- 从模板化父类中的派生内部类访问受保护的成员变量
- 类内初始化与构造函数初始化列表的顺序
- 尝试初始化结构内的联合时出错
- 在函数内初始化无符号字符指针将返回空指针
- 使用类模板的内部类模板专用化模板
- Windows 上的 Clang/LLVM 7 和 8 多次初始化内联静态数据成员(使用 link.exe 和 lld-
- 如何在结构C++初始化内置数组
- new[] 是否初始化内置数组
- 可以用外部类初始化内部类
- 如何为外部类的对象实例化内部类的构造函数
- 将参数传递给方法时,初始化内联整数数组
- 如何用内部类的类型初始化模板类中的静态字段
- C++:初始化英特尔SIMD内部类成员
- 无法初始化内部类的对象C++