为什么我要在这里使用右括号?

mer*_*iay 2 c++ gcc

我有一些代码,我无法编译它.编译器说应该有一个结束括号,但我看不出这个或地方放置它的原因.这是我的代码:

#include "Player.h"

Player(std::string val){
    set_Name(val);
    set_Alliance("NONE");
    set_LastUpdate();
}

Player(std::string val, std::string ally){
    set_Name(val);
    set_Alliance(ally);
    set_LastUpdate();
}
Run Code Online (Sandbox Code Playgroud)

我已经包含在Player.h中

这是错误:

error: expected ')' before 'val'
Run Code Online (Sandbox Code Playgroud)

这是构造函数的原型:

Player(std::string);
Run Code Online (Sandbox Code Playgroud)

我在linux下使用GNU GCC编译器(ubuntu)

hyd*_*yde 11

您正在从类定义之外的构造函数中缺少类名.试试这个:

Player::Player(std::string val){  // constructor outside class definition
    set_Name(val);
    set_Alliance("NONE");
    set_LastUpdate();
}
Run Code Online (Sandbox Code Playgroud)

未经验证的猜测:使用当前代码,编译器会看到Player(symbol1 symbol2)并将其视为创建类Player的对象,并且首先无法理解的是将两个符号视为构造函数参数,并且给出了一个有点误导性的错误.

  • @mertyeniay没有"只在头文件中".头文件只是通过预处理器对.cpp文件进行"复制"的文本.编译器不区分.h和.cpp文件中的代码. (3认同)