0

私は現在、C++ でグラフィカル アプリケーション/ゲームを作成するための SDL を学んでおり、クラス内でボイドを作成および使用する方法についていくつか質問があります。

私の現在のプロジェクトでは、非常に基本的な卓球ゲームを作成しています。オブジェクトの位置、ロードされたビットマップ、その他の変数に関する情報だけでなく、AI/Movement Engine をカバーする関数と別の関数を含むクラスを作成したいと考えています。レンダリング。

コードを次のようにフォーマットできるようにコーディングしたいと思います:(以下のコードはすべて疑似コードであり、達成したい構造のみを表しています)

class Object
{
    private int stuff;
    private void manageStuff();
}

void Object::manageStuff()
{
    stuff++;
}

Object object = new Object();

object.stuff = 0;

for (int i = 0; i < 10, i++)
{
    object.manageStuff();
    cout << object.stuff;
}

C ++でこれを行う明白な方法はありますか?

4

2 に答える 2

0

コンストラクターとイニシャライザーリストを探していると思います。あなたが示した例には他にも多くの問題がありますが、私はそれを修正してコメントしました。多分:

#include <iostream>

class Object
{
// Note: access modifier written like this:
public:
    int stuff;
    void manageStuff();
    Object(); // Constructor which takes no arguments
}; // note semicolon

void Object::manageStuff()
{
    stuff++;
}

Object::Object() : stuff(0) {
  // sets stuff to 0 upon initalization.  
  // could also have written:
  // stuff=0;
  // but in this case initalization is nicer.
}

Object object; // no need for new here

// initial value of stuff set via constructor now,
// you can't just write random statements anywhere

int main() {
  for (int i = 0; i < 10; i++) // note semicolon not comma
  {
      // if these were private this would fail:
      object.manageStuff();
      std::cout << object.stuff << "\n"; 
  }
}

あなたが探していたものにもっと似ています。

于 2012-07-29T15:53:38.717 に答える
0

いいえ。C++ を使用する場合は、実際に C++ を学習する必要があります。これには、少なくとも C++ の構文を学習することが含まれます。強制的に別の言語の構文をエミュレートしようとすることは、不可能であり、有益でもありません。

于 2012-07-29T15:57:06.203 に答える