所以我环顾四周,到目前为止我找不到任何帮助。
我的班级有以下头文件。
#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;
}
}
答案 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