gpt4 book ai didi

c++ - 引用成员和未初始化对象(设计相关)

转载 作者:太空宇宙 更新时间:2023-11-04 12:04:26 24 4
gpt4 key购买 nike

我有一个 Playable 类,它由两个不同的类继承:NoteTrack。Track 类有一个 Generator 类型的成员,它经常被使用并且非常大。 Track 也有 Note-objects 的 multimap。创建的每个音符总是添加到正确的轨道。

我的问题是,在某些情况下,Note 类也需要访问 Tracks Generator-member。

我想通过给 Note 一个 Track &trackReference 成员来完成这个,这样我就可以通过 trackReference 找到正确的 Generator 但问题是这是我不能使用默认构造函数,因为引用不能为空。有时我的 Note 对象只是空的,所以我真的需要一个 Note 的默认构造函数。

那么我该如何实现才能从每个 Note 访问 Generator 对象呢?

最佳答案

如果您的设计允许空实现,那是一种可能的途径。这是一个例子:

class foo
{
public:
virtual void bar() = 0;
};

class null_foo
: public foo
{
virtual void bar() {}
};

class C
{
public:
C(foo& f) : ref(f) {}
C() : ref(null_foo) {};

private:
foo& ref;
};

这是一个 related question.

关于c++ - 引用成员和未初始化对象(设计相关),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12806921/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com