错误:“ GenericEnclosure :: GenericEnclosure”命名了构造函数,而不是类型

时间:2019-06-08 00:28:06

标签: c++

每当我构建此代码时,总是得到“错误:'GenericEnclosure :: GenericEnclosure'命名构造函数,而不是类型”。

我已经尝试过删除GenericEnclosure ::并显示新错误。

.cpp文件

  GenericEnclosure::GenericEnclosure frontLeftEnclosure{name, m_leftFrontDriveMotor, m_leftFrontTurnMotor, m_leftFrontTurnEncoder, 0.1};

.h文件

class GenericEnclosure : public SwerveEnclosure {
public:
    GenericEnclosure(   std::string name,
                frc::SpeedController& m_moveMotor,
                frc::SpeedController& m_turnMotor,
                rev::CANEncoder& m_encoder,
                double m_gearRatio);
    ~GenericEnclosure();

由此,我希望它可以正确构建,但是发生了一些我无法识别的事情。我仍然不了解问题的根源,因为我是新来的,所以一切都会感激的。

编辑:我对删除GenericEnclosure ::是正确的,但是现在我收到此错误

undefined reference to `GenericEnclosure::GenericEnclosure(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, frc::SpeedController&, frc::SpeedController&, rev::CANEncoder&, double)'

1 个答案:

答案 0 :(得分:0)

应该如何编写GenericEnclosure的构造函数的定义的方式:

GenericEnclosure::GenericEnclosure(std::string name,
                                   frc::SpeedController& m_moveMotor,
                                   frc::SpeedController& m_turnMotor,
                                   rev::CANEncoder& m_encoder,
                                   double m_gearRatio)
{
  // something goes here
}

如何声明类型GenericEnclosure的变量:

GenericEnclosure frontLeftEnclosure{name, m_leftFrontDriveMotor, m_leftFrontTurnMotor, m_leftFrontTurnEncoder, 0.1};

GenericEnclosure::GenericEnclosure告诉您,您在命名空间GenericEnclosure中声明了类型为GenericEnclosure的变量,但事实并非如此。

UPD 如果尚未定义构造函数(以及所有声明的方法),则无法声明变量,第二个错误说明了这一点。