-5

在 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# 中可以完成的任务?

4

2 回答 2

6

不,如果 B 需要一个对象,你必须给它一个对象。如果 B 不需要对象,请声明它static。C# 也不例外——在您的示例中,A它不是静态的,因此对象已经存在。

于 2012-08-31T18:50:16.310 回答
3
     static void A();
     void B();

您根本不能使用static函数来调用非静态函数。

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

于 2012-08-31T18:50:09.487 回答