我在C ++方面还算不错,但是我希望这个问题有意义:
在以下情况下,B类中的方法可以调用A类中的方法吗?
例如,可以通过引用B的方法调用传递A的对象来完成此操作。
我的下一个问题是,如果在A的对象内创建B的对象,该怎么办?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();
}
答案 0 :(得分:1)
唯一的问题是您的代码包含许多基本错误,例如声明中缺少类型说明符,缺少终止分号,错误的顺序(在声明之前使用类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()