1

我有两个A类,B类。

对于A,我有两种方法callB(),和checksomethinginB()

对于 B,我有一种方法execute()

我像这样使用它们:

A _a;
_a.callB(); //inside the function, B object _b will be created

//after _b created, in another place, _b will execute _b.execute().
_b.execute()
{
   // I want to use A method checksomethinginB()
}

所以我不知道在B中使用A方法的好方法,我可以创建的是使用静态函数,但我认为可能有更好的方法,谢谢你的建议!!

4

3 回答 3

0

要么将正确的实例传递A给 的构造函数B,要么在需要时传递它。

如果checksomethinginB不需要任何状态,A那么它当然可以是静态的。

于 2012-11-10T12:05:45.230 回答
0

在没有查看课程详细信息并且没有说明您的课程实际做什么的情况下,您可以考虑以下选项:

  1. 如果 A 类和 B 类之间存在共性,您可以考虑从另一个中派生出一个。除非有充分的理由,否则不应使用此功能,而不仅仅是为了使您能够做您想做的事
  2. 修改函数签名B:execute以获取作为类 A 实例的参数参数(或指向或引用 A 实例的指针),以便您可以调用A::checksomethinginB()
  3. 按照您的建议将函数设为静态 - 请记住,如果checksomethinginB()需要访问 A 的非静态成员变量,这是不可能的

可能有更好的选择,但如果没有关于你的类和功能要求的更多细节,很难说

于 2012-11-10T12:06:59.057 回答
0

我不太确定您为什么要在class A其中运行的功能class B-我会A::checksomethinginB()转到B::checksomething(). 从这里,我看到了两种(+1)的可能性:

  1. 如果A::checksomethinginB/B::checksomething不使用来自 的任何状态A,那么您就完成了..
  2. 如果是这样,那么它实际上A在它的代码中使用,所以你需要给他一个:可能传递一个对它的引用。
  3. 如果它只使用A's 的静态部分,你可以直接使用它们A::staticSomethingNotMentionedBefore
于 2012-11-10T12:20:59.057 回答