【发布时间】:2014-01-06 17:18:55
【问题描述】:
我有一个包含静态属性的简单类。这个类中有两个静态方法:一个是获取静态属性,另一个是初始化它。然而,当调用静态方法时,编译器会报错。
班级:
class Sudoku {
Cell Grid[9][9];
int CurrentLine;
int CurrentColumn;
void deleteValInColumn(int val, int col);
void deleteValInRow(int val, int row);
void deleteValInBox(int val, int x, int y);
static int unsetted; //!
public:
static void IniUnsetted() { //!
unsetted = 0;
}
static int GetUns() { //!
return unsetted;
}
Sudoku(ini InitGrid[9][9]);
void Calculate_Prob_Values();
Cell getCell(int x, int y);
QVector<int> getPossibleValues(int x, int y);
bool SolveIt();
};
这是我得到的错误:
In member function 'bool Sudoku::SolveIt()':
no return statement in function returning non-void [-Wreturn-type]
In function `ZN6Sudoku6GetUnsEv':
undefined reference to `Sudoku::unsetted` error: ld returned 1 exit status
【问题讨论】:
-
尝试将
unsetted放入cpp文件中:int Sudoku::unsetted = 0 -
你可能会找到答案here。
-
@Angew:这个问题的主题太宽泛了。
-
@AdriC.S.:不,那是不必要的。默认初始化为零!
-
@LaszloPapp 它可能是零初始化的,但它仍然需要在 .cpp 文件中定义,而 OP 显然没有提供。所以
= 0是不必要的,但它需要定义本身。