2
Multiple markers at this line
- candidates are:
- no matching function for call to 
 'Coordinate::Coordinate()'

クラスのコンストラクターでこのエラーが発生しましたが、その理由がわかりません。関連するコードは次のとおりです。

RadialScan ヘッダー

#ifndef RADIALSCAN_H_
#define RADIALSCAN_H_
#include "EasyBMP/EasyBMP.h"
#include <vector>
#include "Coordinate.h"

using namespace std;

class RadialScan {
    vector<int> distanceTimeSeries;
    vector<Coordinate> timeSeries;
    BMP image;
    Coordinate center;

    Coordinate getNextPoint(Coordinate c);
    bool isBlack(Coordinate c);
    void computeTimeSeries();

public:
    RadialScan(char* filename);
    vector<int> getDistances();
    vector<Coordinate> getCoordinates();
};

#endif

RadialScan クラス (すべてのメソッドが実装されていますが、エラーはコンストラクターにあり、それが私が提供しているコードです):

#include "RadialScan.h"

RadialScan::RadialScan(char* filename){
    image.ReadFromFile(filename);
    int centerX = image.TellWidth()/2;
    int centerY = image.TellHeight()/2;
    center = Coordinate(centerX, centerY);
}
...

エラーはコンストラクターにあるようです。コンストラクターを削除すると、すべてが正しくコンパイルされるようです。コンストラクター内のコードを削除しても、まだエラーが発生します。RadialScan(char* filename) コンストラクターで座標オブジェクトが定義されていない場合でも、Coordinate::Coordinate() コンストラクターを要求し続ける理由がわかりません。

さらに、これらは Coordinate クラスのファイルです: ヘッダー:

#ifndef COORDINATE_H_
#define COORDINATE_H_

class Coordinate {
    int x;
    int y;
public:
    Coordinate(int x, int y);
    void setX(int oneX);
    void setY(int oneY);
    int getX();
    int getY();
    double getMagnitude();
    Coordinate operator-(const Coordinate&);
    bool operator==(const Coordinate&);
    Coordinate operator=(const Coordinate&);
};

#endif

cpp クラス:

#include "Coordinate.h"
#include <math.h>

Coordinate::Coordinate(int oneX, int oneY) {
    x = oneX;
    y = oneY;
}

//Setters
void Coordinate::setX(int oneX) {
    x = oneX;
}

void Coordinate::setY(int oneY) {
    y = oneY;
}

//Getters
int Coordinate::getX() {
    return x;
}

int Coordinate::getY() {
    return y;
}

double Coordinate::getMagnitude() {
    return sqrt(x * x + y * y);
}

Coordinate Coordinate::operator-(const Coordinate& p) {
    return Coordinate(x - p.x, y - p.y);
}

bool Coordinate::operator==(const Coordinate& p) {
    return x == p.x && y == p.y;
}

Coordinate Coordinate::operator=(const Coordinate& p) {
    return Coordinate(p.x, p.y);
}
4

1 に答える 1