我对C ++相当满意,但是我希望这个问题有意义:

在以下情况下,B类中的方法可以调用A类中的方法:

  • B不能继承A
  • 您不能在B内创建A的对象
  • 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();

}

#1楼 票数: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()

  ask by Andrew Cina translate from so

未解决问题?本站智能推荐:

2回复

我可以使用一个类来控制C++中另一个类的对象吗?(阿杜诺)

我正在尝试使用 Arduino 来控制带有 3 个电机的机器人底座。 我有一个类来控制每个类的个性,称为 SimpleMotor,并且想要一个类来控制称为 Driver 的 3 个 SimpleMotor。 我希望能够初始化 3 个 SimpleMotors,然后用电机对象初始化一个 Driver
1回复

如何只继承一个类的方法,而不是整个类本身(C++)

我有两个类 - Deck和Player ,其结构如下:class Deck {public: //constructors, destructors, operator= void addCard(const Card &card); bool changeCard(con
3回复

在C++中,如何确定类是否是继承链中的最后一个类/子类?即在基类的另一端

我在简单地写这个问题时遇到了问题,但基本上在类中有一个函数可能是继承链中的最后一个类,或者它可能不是。 在此函数内部,如果类级函数是继承链中的最后一个函数,则将调用第二个函数。 显示我正在谈论的内容比解释它要容易得多,所以: 让我们说我有Z级。 Z派生自Y,它源自X,源自W. 所
3回复

使用另一个类的C++方法声明

我开始学习C ++(来自Java),所以请耐心等待。 我似乎无法接受我的方法声明来接受我所制作的课程。 “上下文”尚未宣布 我想我不理解一个基本概念,但我不知道是什么。 Expression.h Context.h
2回复

要在新类中使用另一个类,我应该继承吗?

背景:我有一个class Button ,其中包含状态数据,纹理和一些成员函数,如draw() 。 现在,我要创建新的Button class Buttons ,其中包含Button对象的向量( vector<Button> ButtonList ),以及成员函数以维护它们并可能基
1回复

如果我在另一个类中使用某个类的对象,是否可以使用指向第一类对象的指针来指向其成员?

这是我使用的代码:gdb一旦启动构造函数,就会显示分段错误。 我可能做错了什么? 在这里,每当我尝试使用root->junior[0]=NULL或类似的东西时,它都会给我一个分段错误。 可能是什么问题呢?
3回复

模板类如何继承另一个模板类?

我有一个“SquareMatrix”模板类,它继承了“Matrix”模板类,如下所示: SquareMatrix.h: 我注释掉了所有其他行,文件内容与上面完全相同。 我收到这些错误消息(Visual Studio 2010): 第49行:智能感知:期待一个声明 第52行:
1回复

有一个基类的方法使用继承类的静态成员变量......可能吗?

基类: 为简单起见,我遗漏了无关的成员/方法等。 因此,情况如下: CheckingAccount应该与SavingsAccount相同,但它应该具有不同的APR(利率)。 所有SavingsAccounts共享相同的APR并且所有CheckingAccounts共享它们自己的APR