-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関数を使用して非静的関数を呼び出すことはできません。

解決策:(現在のオブジェクトに依存しない場合は)マークBも付けると、新しいオブジェクトを作成する必要がなくなります。そうでなければ、私は非静的であるべきだstaticと思います。A

于 2012-08-31T18:50:09.487 に答える