C++ 我可以在另一个 class 中使用标识符吗?
C++ Can I use Identifiers in another class?
我是 C++ 的新手,所以我不知道该怎么做。基本上我有一些在 PvUiSampleDlg.h 中声明的 CEdit 类型的标识符。它们用于 PvUiSampleDlg.cpp.
CEdit mIPEdit;
CEdit mMACEdit;
CEdit mManufacturerEdit;
CEdit mModelEdit;
CEdit mNameEdit;
我所做的是创建另一个名为 SettingsDlg.cpp 的 class,我也想在此 class 中使用相同的标识符。我该怎么做呢?我假设您必须在 SettingsDlg.h 中获取标识符,但我不确定该怎么做。我在 SettingsDlg.cpp 和 SettingsDlg.h 中都有#include PvUiSample.h。任何帮助将不胜感激。
您似乎在寻找 extern
关键字。
当你声明你的变量时,将 extern
放在它们的前面。这让 compiler/linker 知道这些变量将在这个文件之外使用。
//PvUiSampleDlg.h
extern CEdit mIPEdit;
extern CEdit mMACEdit;
extern CEdit mManufacturerEdit;
extern CEdit mModelEdit;
extern CEdit mNameEdit;
确保只在一处初始化变量。
//PvUiSampleDlg.cpp
#include "PvUiSampleDlg.h"
CEdit mIPEdit(/* your constructor args*/); // You can initialize like this
...
void someFunc(){
return mIpEdit; // do something with your variable as you would normally
}
您可以如上所示初始化您的变量。确保包含包含外部变量的 header,否则初始化会将其视为普通静态变量。
然后在任何其他文件中,包括您的 header,您可以按预期使用这些变量。
我是 C++ 的新手,所以我不知道该怎么做。基本上我有一些在 PvUiSampleDlg.h 中声明的 CEdit 类型的标识符。它们用于 PvUiSampleDlg.cpp.
CEdit mIPEdit;
CEdit mMACEdit;
CEdit mManufacturerEdit;
CEdit mModelEdit;
CEdit mNameEdit;
我所做的是创建另一个名为 SettingsDlg.cpp 的 class,我也想在此 class 中使用相同的标识符。我该怎么做呢?我假设您必须在 SettingsDlg.h 中获取标识符,但我不确定该怎么做。我在 SettingsDlg.cpp 和 SettingsDlg.h 中都有#include PvUiSample.h。任何帮助将不胜感激。
您似乎在寻找 extern
关键字。
当你声明你的变量时,将 extern
放在它们的前面。这让 compiler/linker 知道这些变量将在这个文件之外使用。
//PvUiSampleDlg.h
extern CEdit mIPEdit;
extern CEdit mMACEdit;
extern CEdit mManufacturerEdit;
extern CEdit mModelEdit;
extern CEdit mNameEdit;
确保只在一处初始化变量。
//PvUiSampleDlg.cpp
#include "PvUiSampleDlg.h"
CEdit mIPEdit(/* your constructor args*/); // You can initialize like this
...
void someFunc(){
return mIpEdit; // do something with your variable as you would normally
}
您可以如上所示初始化您的变量。确保包含包含外部变量的 header,否则初始化会将其视为普通静态变量。
然后在任何其他文件中,包括您的 header,您可以按预期使用这些变量。