java - 如何在 C++ 中实现返回类似 Object-in-Java 的方法

标签 java c++

<分区>

我正在从 Java 背景学习 C++,这是我刚遇到的一个问题:

假设我有一个名为 A 的类。我使用一个名为 AWrapper 的包装器。我希望 A 有一个指向其包装器的链接,而不仅仅是 AWrapper,而是任何包装器。所以在 Java 中,我可以按如下方式实现:

public class A {
    Object tag;
    Object getTag() {
        return tag;
    }

    void setTag(Object tag) {
        this.tag = tag;
    }
}

及其包装器:

public class AWrapper {
    A a;
    public AWrapper(A a) {
        this.a = a;
        a.setTag(this);
    }
}

但是在C++中,一切都没有那么简单。首先,C++ 在 Java 中没有任何对象作为对象。其次,如果我在 getTag() 中不使用 Object 而使用 AWrapper 作为返回值,我将遇到循环依赖问题。谁能告诉我如何解决这个问题?

如果我的问题很愚蠢,我真的很抱歉,我的 C++ 技能仍然很差,所以任何帮助将不胜感激!

最佳答案

我认为你只需要一个空指针——这个可以编译,但我还没有玩过它:

class A
{
public:
    void *tag;
    virtual void *getTag()
    {
        return tag;
    }

    virtual void setTag(void *tag)
    {
        this->tag = tag;
    }
};

class AWrapper
{
public:
    A *a;
    AWrapper(A *a)
    {
        this->a = a;
        a->setTag(this);
    }
};

关于java - 如何在 C++ 中实现返回类似 Object-in-Java 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13115234/

相关文章:

java - CheckedTextView 错误 :android. content.res.Resources$NotFoundException:资源 ID #0x0

java - 我的单例模式实现错误

c++ - POD 类已初始化为放置新默认值?

java - 将 SDL 2.0 游戏移植到 Android

c++ - 插入流的右值引用是否合理有效?

play框架项目中资源的java相对路径

java - 是否可以在 Eclipse 的 Java 堆栈跟踪控制台中自动换行?

c++ - CUDA:堆栈和堆

java - Atmosphere @MeteorService 注释不起作用

未收到 C++ Windows 异步 IO 命名管道第一条消息