我已经写了一个Cell课程。当我使用默认参数作为内联函数编写构造函数时,没有问题
cell.h
Class Cell{
public:
Cell(int x, int y, char sign='.'):X(x), Y(y), Sign(sign){}
};
但是,如果我想像这样在我的源文件中移动该实现:
cell.h
Class Cell{
public:
Cell(int x, int y, char sign='.');
};
cell.cpp
Cell::Cell(int x, int y, char sign='.'):X(x), Y(y), Sign(sign){}
编译器说:
Reversi.cpp:1144:43: error: default argument given for parameter 3 of ‘Cell::Cell(int, int, char)’ [-fpermissive]
Cell::Cell(int x, int y, char sign='.'):X(x), Y(y), Sign(sign){}
^
In file included from Reversi.cpp:7:0:
Reversi.h:16:5: note: previous specification in ‘Cell::Cell(int, int, char)’ here
Cell(int x, int y, char sign='.');
^
最佳答案
您正在尝试在两个文件中指定默认参数。仅在头文件中执行此操作,编译器将停止抱怨。
单元格
Class Cell
{
public:
Cell(int x, int y, char sign);
};
单元格
Cell::Cell(int x, int y, char sign='.'):X(x), Y(y), Sign(sign)
{
}
关于c++ - 非内联构造函数中的默认参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34111622/