gpt4 book ai didi

c++ - 错误 : expected constructor, 析构函数,或 ‘(’ token 之前的类型转换。即使我有一个构造函数?

转载 作者:行者123 更新时间:2023-11-28 04:44:54 26 4
gpt4 key购买 nike

我正在尝试编译我的 LineADT.cpp 文件,但不断收到此错误:

error: expected constructor, destructor, or type conversion before ‘(’ token
LineT::LineT(PointT::PointT st, MapTypes::CompassT ornt, unsigned int l) {

我的 LineADT.cpp:

#include "MapTypes.h"
#include "PointADT.h"
#include "LineADT.h"

LineT::LineT(PointT::PointT st, MapTypes::CompassT ornt, unsigned int l) { //Error

this->s = st;
this->o = ornt;
this->L = l;

}

我的 LineADT.h:

#ifndef LINET_H
#define LINET_H

#include "MapTypes.h"
#include "PointADT.h"


class LineT {

private:
PointT s;
MapTypes::CompassT o;
unsigned int L;

public:

LineT (PointT st, MapTypes::CompassT ornt, unsigned int l);
};

#endif

我的 PointADT.h:

#ifndef POINTT_H
#define POINTT_H

class PointT {

private:
double xc;
double yc;

public:
PointT (double x, double y);
};

#endif

我的 maptypes.h:

#ifndef MAPTYPES_H
#define MAPTYPES_H

class MapTypes {

public:
enum CompassT {N, S, E, W};
enum LandUseT {Recreational, Transport, Agricultural, Residential, Commercial};
enum RotateT {CW, CCW};
};

#endif

我不明白的是为什么编译器无法识别该行是构造函数(至少我是这么认为的)。

最佳答案

两个问题。

首先:

LineT::LineT(PointT::PointT st, MapTypes::CompassT ornt, unsigned int l) {
// ^^^^^^^^

没有。

LineT::LineT(PointT st, MapTypes::CompassT ornt, unsigned int l) {

其次:PointT 没有默认构造函数,因此您必须 初始化它,而不仅仅是稍后分配给它。

LineT::LineT(PointT st, MapTypes::CompassT ornt, unsigned int l)
: s(st)
, o(ornt)
, L(l)
{}

就风格而言,我还建议使用更清晰、更一致的名称。

关于c++ - 错误 : expected constructor, 析构函数,或 ‘(’ token 之前的类型转换。即使我有一个构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49450906/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com