ina*_*101 1 c++ ubuntu static g++ class
有人可以告诉我下面的课程中有什么问题,g ++在ubuntu上给出了错误:
class FibonacciGenerator
{
private:
static int num1, num2, counting;
public:
static void Reset()
{
num1 = 0; num2 = 1;
counting = 1;
}
static int GetCount()
{
return counting;
}
static int GetNext()
{
int val = 0;
if(counting == 1) val = num1;
else if(counting == 2) val = num2;
else
{
val = num1 + num2;
num1 = num2;
num2 = val;
}
counting ++;
return val;
}
};
static int num1, num2, counting;类定义中的语句不定义那些变量,它只声明它们.如果使用它们,也必须定义它们.
一个完整的例子如下:
//Begin FibonacciGenerator.hpp
#ifndef FIBONACCI_GENERATOR_HPP
#define FIBONACCI_GENERATOR_HPP
class FibonacciGenerator
{
private:
static int num1, num2, counting;
public:
/* as above */
};
#endif //FIBONACCI_GENERATOR_HPP
//End FibonacciGenerator.hpp
//Begin FibonacciGenerator.cpp
#include "FibonacciGenerator.h"
int FibonacciGenerator::num1;
int FibonacciGenerator::num2;
int FibonacciGenerator::counting;
//End FibonacciGenerator.cpp
Run Code Online (Sandbox Code Playgroud)
如果在命名空间中声明FibonacciGenerator,则这些静态成员定义也必须位于该命名空间中.
像这样使用静态成员可能是一个非常糟糕的主意.最好使它们成为实例变量,这样你就可以FibonacciGenerators在代码的不同部分中拥有多个独立的变量.