如何初始化类中的常量
How to initialize a constant in a class?
所以我找了一下,到目前为止我没有找到任何帮助。
我的类有以下头文件:
#ifndef CONGERA2_H
#define CONGERA2_H
typedef float Element300;
class Stack300
{
public:
Stack300 ();
Stack300 (const int);
Stack300 (Stack300 &old);
~Stack300();
void push300(const Element300);
Element300 pop300();
void viewTB300();
void viewBT300();
private:
const int MAX_STACK;
Element300 * stackArray;
int top;
};
#endif
我正在尝试初始化MAX_STACK。如果我设置它等于什么,我得到一个警告,这通常是好的,但我必须把这段代码转移到Linux之后,我不能这样做,因为它说,MAX_STACK是未定义在我的三个构造函数。我还尝试在第一个构造函数的类函数文件中定义它,但随后我得到一个错误,说MAX_STACK未在构造函数中定义。
如果需要的话,这里是我的类函数的构造函数。
#include <iostream>
#include "congera2.h"
using namespace std;
Stack300::Stack300 (): MAX_STACK(10)
{
stackArray = new float[3];
for (int i = 0; i < 3; i++)
{
stackArray[i] = ' ';
}
top = -1;
return;
}
Stack300::Stack300 (const int size) : MAX_STACK (10)
{
stackArray = new float[MAX_STACK];
for (int i = 0; i < MAX_STACK; i++)
{
stackArray[i] = ' ';
}
top = -1;
return;
}
Stack300::Stack300 (Stack300 &old) : MAX_STACK (10)
{
top = old.top;
int i = 0;
while (top != old.top)
{
stackArray[i] = old.stackArray[i];
i = i + 1;
top = i;
}
}
错误:
class A
{
public:
const int x=8; // error (c++98/03)
};
修复1
class A
{
public:
const int x;
A() : x(8) // ok
{ }
};
修复2
class A
{
public:
const static int x;
};
const int A::x=8; // ok
相关文章:
- 当一个值是非常量但用常量表达式初始化时使用constexpr
- 如何使用数据对象上的常量指针初始化类
- 为什么C++常量模板化向量在使用之前没有初始化?
- 犰狳C++ - 从常量内存初始化只读矩阵而不复制
- 从另一个静态常量数组初始化静态常量数组(只需少量计算)
- C++ 模板中的静态常量初始化顺序
- 具有静态存储持续时间的常量初始化变量的初始化顺序
- 当 T 具有非平凡析构函数时,类类型 T 的对象是否可以常量初始化?
- 对常量初始化的困惑
- 在不同翻译单元中具有静态存储持续时间的依赖非局部常量浮点变量的常量初始化
- 使用静态常量初始化unique_ptr时出现未定义的引用错误
- 正在从常量初始化字符数组
- 如果首先使用非常量初始化,为什么允许对 const 的非常量引用?
- 通过元编程自动+静态类内常量初始化
- 多个数据成员的常量初始化
- 使用整数常量0初始化实例,但不使用其他常数值或整数变量
- float的类内静态常量初始化与C++中的int有何不同
- 用常量初始化数组无效
- 在常量初始化器中调用constexpr构造函数的限制
- Java风格的静态常量初始化