如何初始化类中的常量

How to initialize a constant in a class?

本文关键字:常量 初始化      更新时间:2023-10-16

所以我找了一下,到目前为止我没有找到任何帮助。

我的类有以下头文件:

#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