1

私は昨夜からこれに悩まされてきました、そして私の人生の間、私はこれがなぜ起こっているのか理解することができませんでした。とてもシンプルなものが欠けているに違いありません。

私はOpenGLプログラムを作っています。このプログラムでは、DialogBoxクラスを作成しています。以下はコードです:

//---------------------------------------------------------------
//DialogBox.h
//---------------------------------------------------------------

#include <vector>

class DialogBox
{
    private:

      float X; float Y; float Z;
      float Width;
      float Height;

      float RED;
      float GREEN;
      float BLUE;
      float ALPHA;

      int currentLine; 
      int maxLines;    //How many lines of text this dialog box can hold
      int maxChars;    //How many chars each line of text can hold

      std::vector< std::vector<char> >Text; //Text contents of the Dialog Box

      unsigned int vertexArray_DialogBox;
      unsigned int vertexBuffer_DialogBox;


   public:

      DialogBox();
      DialogBox(float width, float height);

      void draw();
      void draw(float x, float y, float z);

};

//------------------------------------------------------------------------
//DialogBox.cpp
//------------------------------------------------------------------------

#include <iostream>
#include "DialogBox.h"

DialogBox::DialogBox()
{
    X = 0.0f; Y = 0.0f; Z = 0.0f;

    Width = 1.0f;
    Height = 1.0f;

    RED = 0.0f;
    GREEN = 1.0f;
    BLUE = 1.0f;
    ALPHA = 1.0f;

    //For HELVETICA_18 ----------------------
    static const float letter_width = 0.03f;
    static const float letter_height = 0.04f;
    static const float line_height = 0.1f;
    //---------------------------------------


   maxLines = Height / line_height - 4; 
   maxChars = Width / letter_width - 2; 

   Text.resize(maxLines);
   for(int i = 0; i < maxLines; i++)
   {
       Text[i].resize(maxChars);
   }
}

DialogBox::DialogBox(float width, float height)
{
    Width = width;
    Height = height;
    //The rest of the initialization codes
}

void DialogBox::draw()
{
    //OpenGL Drawing codes
}

void DialogBox::draw(float x, float y, float z)
{
    X = x; Y = y; Z = z;
    draw();
}

そして、コンパイラはこのエラーメッセージをスローしました:

ここに画像の説明を入力してください

髪の毛を抜いてきましたが、コンパイラが何を指しているのかわかりませんでした。それは本当に単純なものでなければなりません(コードのタイプミスなど)。よろしくお願いします。

4

3 に答える 3

7

同じ行のその警告は何ですか?

マクロ'DialogBoxA'の実際のパラメータが不足しています

DialogBox-d#defineマクロですか?もしそうなら、それはおそらく物事を台無しにするでしょう。

于 2013-01-20T21:30:33.067 に答える
3

コードをコンパイルするとDialogBox::draw()、リターンタイプが指定されていないため、でエラーが発生します。具体的には、これは実装に関するものであり、宣言に関するものではありません。それは私があなたのコードで見つけた唯一のコンパイラエラーです。おそらく、コンパイラが間違った行にフラグを立てているだけですか?

于 2013-01-20T21:29:49.920 に答える
3

Microsoftは、DialogBoxという名前の関数(マクロ?)をすでに提供しています:http: //msdn.microsoft.com/en-us/library/windows/desktop/ms645452%28v=vs.85%29.aspx

おそらく、、または何でも引き込まれまし<iostream><vector>。クラスの名前をより元の名前に変更すると役立つはずです。

于 2013-01-20T21:47:36.620 に答える