来自同一个类的C ++方法调用

时间:2012-08-31 18:47:05

标签: c++

在C ++中,我希望能够在同一个类中调用方法,而无需创建整个类的对象。这个类很庞大,我不想为一个对象创建一个巨大的内存位置。我习惯用C#编程。

在C#中我可以做到这一点

class test()
{
 private void A()
 {
    B();
 }

 private void B()
 {
    doSomething;
 }
}

在C ++中我的印象是我必须做的。

class test()
{
  public:
         static void A();
         void B();
};


 void test::A()
 {
    test t;
    t.B();
 }

 void test::B()
 {
    doSomething;
 }
}

我不想让B()静态,也不想创建测试对象,因为实际上我的类比这要大很多,创建类的对象会使用我不想要的内存至。

有没有办法可以在C ++中用C#完成我的工作?

2 个答案:

答案 0 :(得分:6)

没有。如果B需要一个对象,你必须给它一个对象。如果B不需要对象,则声明它为static。 C#没有什么不同 - 在您的示例中,A不是静态的,因此对象已经存在。

答案 1 :(得分:3)

     static void A();
     void B();

您根本无法使用static函数来调用非静态函数。

<强>解决方案: 将B标记为static(如果它不依赖于当前对象),因此您不必创建新对象。我认为A应该是非静态的。