0

現時点では、次のように C++ でグローバル オブジェクトを宣言しようとしています。

globals.h で

#pragma once
#include "Class.h"

extern Class *obj;

次に、globals.cpp という別のファイルに

#include "globals.h"
Class *obj;

そして、main.cppに私が持っています

#include "globals.h"

しかし、コンパイラは私にこのエラーをスローします

in globals.h: error C2143: syntax error : missing ';' before '*'    

この投稿以来、私はこれを理解していません: c++ グローバルオブジェクトは、これがその方法であると説明しています。

4

2 に答える 2

1

問題は、class.hを含めることglobals.hです。これを行うと、プログラムはコンパイルされますが、アクセス違反がスローされるとのことです。次に、ロジックにエラーがあります。これは別の問題です。

最初にコンパイラ エラーを修正します。アクセス違反はおそらく、グローバルを正しく初期化していないためです。つまり、それは単なるNULLポインターです。

于 2013-01-01T16:43:20.313 に答える
1

C2143class Class通常、コンパイラが変数宣言の前の定義/宣言を見つけていないことを意味します。

可能性のある 1 つの方法は、おそらく .NET のクラス定義の末尾にあるセミコロンを見逃していることですclass.h

class.h

あなたが持っている

class Class
{
    ....
}

上のセミコロンを忘れました。

への変更

class Class
{
    ....
} ;

これが当てはまらない場合、クラス Class の定義が class.h に見つからない他の理由はありますか? #ifdefs または何かの中にありますか?

/P でコンパイルしてからエディターで開き、ステートメントの前にmain.iの宣言があるかどうかを確認してください。class Classextern

于 2013-01-01T16:38:43.200 に答える