我已经写了一个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/

10-10 13:26
查看更多