0

g ++ 4.1.2のあちこちでこれらのエラーメッセージが表示されますが、まったく役に立ちません。

<file>:<line>: error: expected primary-expression before 'int'
<file>:<line>: error: expected ';' before 'int'
<file>:<line>: error: invalid use of qualified-name '::SuccessCode'

それが発生するコードは次のように単純です。

class Test
{
  static Status debug_function(void)
  {
    return Status::SuccessCode();   // this would be <file>:<line> mentioned above
    // and this one too:
    // return Status::FailureCode("test");
  }
};

そして、これがステータスのコードです(インクルードファイルが無効な場合はエラーが発生するため、適切にインクルードされています):

namespace CODES
{
  enum Values { Success = 0, Failed = 1 };
}

class Status
{
private:
  CODES::Values code;
  string msg;
public:
  Status(CODES::Values val, const string &i_msg ): code(val), msg(i_msg) {}

  static Status SuccessCode(void)
  {
    return Status(CODES::Success, "");
  }

  static Status FailureCode(const string &fail_msg)
  {
    return Status(CODES::Failed, fail_msg);
  }
};

では、このコードの何が問題になっていますか?そしてそれはVC++の下で正しくコンパイルされます!

編集:実際には、SuccessCodeとFailureCodeのコードは*.cppファイルにあります。エラーメッセージは同じなので、クラス宣言に入れました。

4

1 に答える 1

2

完全なプログラムがなければ、私は推測する必要があります。私の推測では#define Status int、プログラムのどこかにあります。

于 2012-05-22T14:41:30.723 に答える