3

サブクラスが main.cpp ファイルから変数にアクセスできるかどうか疑問に思っていました。例えば:

メイン.ccp

int x = 10;

int main()
{
    return 0;
}

サンプル クラスの cpp

Subclass::Subclass ()
{
    x = 5;
}

エラー:

error: 'x' was not declared in this scope

私はコーディングが初めてで、これが何らかの形で可能かどうか疑問に思っていました。そうでない場合、どうすればこのようなことができますか?

4

3 に答える 3

5

これは可能ですが、一般的には良い考えではありません:

メイン.ccp

int x = 10;

int main()
{
    return 0;
}

サンプル クラスの cpp

extern int x;

Subclass::Subclass ()
{
    x = 5;
}

おそらく、代わりにやりたいことはx、関連するクラスまたは関数への参照を渡すことです。

少なくとも、別の方法で構造化することをお勧めします。

x.hpp:

extern int x;

x.cpp

#include "x.hpp"

int x = 10;

クラス.cpp:

#include "x.hpp"

Subclass::Subclass()
{
    x = 5;
}
于 2013-07-28T03:51:34.050 に答える
2

class'cpp に x の extern 宣言を追加すると、コンパイラは他の cpp ファイル自体で x 定義を見つけます。

コードを少し変更します。

メイン.cpp

#include "class.h"

int x = 10;

int main()
{
    return 0;
}

サンプル クラスの cpp

#include "class.h"

extern int x;

Subclass::Subclass ()
{
    x = 5;
}

ヘッドファイル class.h

class Subclass {
public:
    Subclass ();
};

extern キーワードについては、これを参照してください: How do I use extern to share variables between source files?

于 2013-07-28T03:52:13.307 に答える