调用在 HXX 文件中声明的静态数据成员
calling a static data member declared in hxx file
我已经在文件中声明了一个静态变量,比如"example.hxx",并在cxx文件中以这种方式调用这个变量"example.cxx" 例子.hxx 文件 :-
class example{
private:
static int p;
public:
void func();
};
CXX 文件
#include <example.hxx>
class example{
void func(){
std::cout<<p;
}
}
我收到对 p 的未定义引用的错误。 为什么会发生这种情况以及如何解决这个问题? 我已经看到了一些与这个问题相关的答案,但没有一个处理单独的 hxx 和 cxx 文件,而是回答 wrt main 函数。如果有人消除我的疑虑,那就太好了!
您只声明了p
.你还需要在类外定义它,就像这样:
// .hpp file
class example{
private:
static int p; // declaration
};
// .cpp file
int example::p = 42; // definition
或者,您可以执行以下操作:
class example{
private:
inline static int p = 42; // inline definition
};
您的语法不正确。首先,在 .hxx 文件中定义example
时缺少;
。其次,您有多种类定义example
。相反,您应该按如下方式定义func
:
void example::func(){
....
}
第三,你对func
有多种定义。将void func(){};
替换为void func();
。
完成后,您还缺少 p 的定义。
class example{
private:
static inline int p = some_value;
...
或者在 .cxx 文件中添加定义。
相关文章:
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 静态数据成员模板专用化的实例化点在哪里
- 调用在 HXX 文件中声明的静态数据成员
- 虚拟成员函数的定义是否强制在同一转换单元中动态初始化静态数据成员?
- 错误: 无效使用非静态数据成员"应用程序::应用程序构造函数"
- 静态数据成员:它"const declaration / constexpr definition"起作用?
- 何时需要定义类的静态数据成员 (un/-)
- 为什么静态数据成员不能在c++11中的类中初始化
- 静态数据成员的模板专用化
- 拒绝包含某些公共静态数据成员的类型
- GCC:在调试构建中优化的静态数据成员
- 类模板静态数据成员定义/声明/初始化
- C++ 中的静态数据成员
- 如果类在 C++ 中具有常量或引用类型的非静态数据成员,为什么编译器不提供默认赋值运算符?
- 使用 lambda 函数初始化静态数据成员
- 引用静态数据成员
- 学习C++并在早期示例中遇到错误(在非静态数据成员之前需要构造函数)
- Windows 上的 Clang/LLVM 7 和 8 多次初始化内联静态数据成员(使用 link.exe 和 lld-
- 为什么不能使用"( )"为类的非静态数据成员提供默认值?
- 不带初始值设定项的 constexpr 静态数据成员