簡體   English   中英

C ++子類訪問主類變量

[英]C++ subclass accessing main classes variables

我想知道子類是否可以從main.cpp文件中訪問變量。 例如:

Main.ccp

int x = 10;

int main()
{
    return 0;
}

示例類的cpp

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

錯誤:

error: 'x' was not declared in this scope

我是編碼的新手,我想知道這是否可行,如果沒有,我怎么能這樣做?

這是可能的,雖然通常不是一個好主意:

Main.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;

class.cpp:

#include "x.hpp"

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

在class'cpp中添加x的extern聲明,然后編譯器將在其他cpp文件本身中找到x定義。

對代碼稍作修改:

Main.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關鍵字,請參考: 如何使用extern在源文件之間共享變量?

C ++不是java。 這里沒有主類,從類中的方法訪問全局變量不是問題。 問題是訪問另一個編譯單元(另一個源文件)中定義的變量。

解決問題的方法是確保變量是在你使用它的編譯單元中定義的,就像Vaughn Cato建議的那樣(當我輸入它時)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM