我想知道子類是否可以訪問main.cpp文件中的變量。例如:訪問主類變量的C++子類
Main.ccp
int x = 10;
int main()
{
return 0;
}
示例類的CPP
Subclass::Subclass()
{
x = 5;
}
錯誤:
error: 'x' was not declared in this scope
我是新來的編碼,我想知道這是否在某種程度上可能如果不是,我該怎麼做這樣的事情?
我想知道子類是否可以訪問main.cpp文件中的變量。例如:訪問主類變量的C++子類
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;
}
Add extern dec在class'cpp中插入x,然後編譯器會在其他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關鍵字,參考這個:How do I use extern to share variables between source files?
我這樣做了,現在它說undefined引用'x'而不是 – Rapture686
@ user2548588有趣的是,它對我有用。至少你應該在頭文件中有一個類聲明,並且包含兩個cpp文件,對吧?更具體地說,我編輯了我的答案。 – lulyon
C++不是java。你在這裏沒有主類,並且從類中的方法訪問全局變量不是問題。問題在於訪問另一個編譯單元(另一個源文件)中定義的變量。
解決這個問題的方法是確保變量是在你使用它的編譯單元中定義的,就像Vaughn Cato建議的(當我輸入這個時)。
全局變量是你應該很少使用的東西,如果有的話。 – Borgleader
這是做什麼的原因? – soon
我正在使用SDL,並在主內部創建了SDL_Surface變量,並嘗試從另一個類訪問它們,但我不知道如何。我需要能夠從兩個類訪問它 – Rapture686