gpt4 book ai didi

C++ - 是否可以在没有继承的情况下使用另一个类的方法?

转载 作者:行者123 更新时间:2023-11-28 04:10:09 26 4
gpt4 key购买 nike

我在 C++ 方面相当菜鸟,但有一个我希望有道理的问题:

在这些条件下,B 类中的方法能否调用 A 类中的方法:

  • B不能继承A
  • 不能在 B 中创建 A 的对象
  • A中的方法不能是静态的

例如,是否可以通过引用 B 的方法调用传递 A 的对象来完成此操作。

我的下一个问题是,如果 B 的对象是在 A 的对象中创建的怎么办?A 如何引用自身以传递给对象 B 的方法?

我想象的一个例子:

class A;

class B
{
int x = 10;
int y = 10;
public:
DoThis(A* obj);
};

B::DoThis(A* obj)
{
obj->DoThat(int x, int y);
}
class A
{
public:
DoSomething();
DoThat(int x, int y);
};

A::DoSomething()
{
B objB;
objB.DoThis(this);
}

A::DoThat(int x, int y)
{
std::cout << x << y;
}
int main()
{
A* objA = new A;
objA->DoSomething();

}

最佳答案

唯一的问题是您的代码包含许多基本错误,例如声明中缺少类型说明符、缺少终止分号、顺序错误(在声明类 A 之前使用它)、不匹配在调用和声明等之间。

这是解决问题的补丁。我还在输出的两个数字之间添加了一个 ,(逗号空格)和一个终止换行符。

--- dothis-ORIG.cc  2019-09-18 14:13:15.002235916 -0700
+++ dothis.cc 2019-09-18 14:16:56.548099037 -0700
@@ -1,32 +1,36 @@
+#include <iostream>
+
+class A;
+
class B
{
- x = 10;
- y = 10;
+ int x = 10;
+ int y = 10;
public:
- DoThis(A* obj);
-}
-
-B::DoThis(A* obj)
-{
- obj->DoThat(x, y)
-}
+ void DoThis(A* obj);
+};

class A
{
public:
- DoSomething();
- DoThat();
+ void DoSomething();
+ void DoThat(int x, int y);
+};
+
+void B::DoThis(A* obj)
+{
+ obj->DoThat(x, y);
}

-A::DoSomething()
+void A::DoSomething()
{
B objB;
objB.DoThis(this);
}

-A::DoThat(x, y)
+void A::DoThat(int x, int y)
{
- std::cout << x << y;
+ std::cout << x << ", " << y << std::endl;
}

int main()

关于C++ - 是否可以在没有继承的情况下使用另一个类的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58000642/

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