gpt4 book ai didi

c++两个具有const指针的对象

转载 作者:行者123 更新时间:2023-11-30 01:35:22 27 4
gpt4 key购买 nike

我有两个对象,A 和 B,它们都派生自一个公共(public)基类,并且都包含在一个单独的父类中。我希望 A 和 B 能够访问彼此的指针或引用,以便它们可以调用彼此的成员函数。理想情况下,这些指针/引用应该是常量,这样它们就无法更改。但如果是这种情况,则必须对其进行初始化。我无法找到解决此问题的方法,因为很明显,A 或 B 中的一个必须先于另一个初始化。

精简后,这就是我想要实现的:

class Base
{
};

class A : public Base
{
public:
Base& const refToB;
//some constructor here, but how can it refer to an object that doesn't yet exist?
};

class B : public Base
{
public:
Base& const refToA;
// some constructor here
};

class Parent
{
public:
A a;
B b;
};

显然这里有循环逻辑,但我觉得要求两个可以相互引用的对象是合理的,而不必在 const 上妥协。有出路吗?

关于我的情况还有一些细节。我担心他们会掩盖主要问题,所以我会在下面发表评论。

最佳答案

I am having trouble finding a solution to this problem because clearly one or the other, A or B, must be initialized before the other.

您可以使用:

class Base
{
};

class A;
class B;

class A : public Base
{
public:
A(B const& b) : refToB(b) {}
B const& refToB;
};

class B : public Base
{
public:
B(A const& a) : refToA(a) {}
A const& refToA;
};

class Parent
{
public:
A a;
B b;

Parent() : a(b), b(a) {}
};

但是,这是您可以初始化AB 类型对象的唯一方法。如果没有容器对象,您将无法初始化它们。

目前尚不清楚您为什么要以这种方式设计您的类。很可能有更好的设计可以满足您的需求。

关于c++两个具有const指针的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54264552/

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