Я получил довольно странную ошибку, не могу понять, где проблема.
Во-первых, у меня был этот код:
#include <vector>
#include <castor.h>
typedef castor::lref<int> lint;
class LineValid : public castor::relation {
public:
LineValid(lint* data, size_t size);
LineValid(std::vector<lint> data);
bool operator()() const;
private:
void _establishPermutation();
std::vector<lint> _data;
castor::relation _permutation;
};
В файле livevalid.h, а также:
#include "linevalid.h"
LineValid::LineValid(lint* data, size_t) : castor::relation {
/* ... */
}
LineValid::LineValid(std::vector<lint> data) {
/* ... */
}
/* ... */
в linevalid.cpp. Мой компилятор сказал мне: «linevalid.cpp: 3: 45: ошибка: нет соответствующей функции для вызова« castor :: ratio :: ratio () »…», что верно; поэтому я выясняю, как работает Кастор, и нахожу класс «сопрограммы». Поэтому я сделал свой класс унаследованным от сопрограммы, дав следующий код:
class LineValid : public castor::Coroutine //...
а также
LineValid::LineValid(lint* data, size_t size) : castor::Coroutine //...
LineValid::LineValid(std::vector<lint> data) : castor::Coroutine //...
И здесь мой компилятор сказал мне … точно то же самое, то есть: «linevalid.cpp: 3: 45: error: нет подходящей функции для вызова ‘castor :: Relations :: Relations () …’
Затем я подумал об удалении наследования следующим образом:
class LineValid {//...
а также
LineValid::LineValid(/*...*/) { //...
И мой компилятор говорит: «linevalid.cpp: 3: 45: ошибка: нет соответствующей функции для вызова ‘castor :: Relations :: Relations ()’ …»
Так что я немного смущен этой ошибкой. Откуда это взялось ? Какие дополнительные тесты я могу сделать, чтобы понять, что происходит?
Спасибо за помощь !
Задача ещё не решена.