如何在类中初始化常量?

时间:2015-10-14 00:56:17

标签: c++ class initialization const

所以我环顾四周,到目前为止我找不到任何帮助。

我的班级有以下头文件。

#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] = '\0';
    }

    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] = '\0';
    }

    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;
    }
}

1 个答案:

答案 0 :(得分:0)

错误:

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