Error: expected ')' before '*' token

Рейтинг: 0Ответов: 0Опубликовано: 10.01.2023

Мне кажется что я ошибся в архитектуре классов, тк ошибка весьма странно выглядит. У меня несколько классов, тот с которым я работаю это DataTransmissionPC.

DataTransmissionPC.h

#include "ISerialPC.h"
#include "DataTransmissionBeb/src/DataTransmissionBeb.h"
class DataTransmissionPC : public DataTransmission {
public:
    DataTransmissionPC(ISerialPC* _iSerial);
}

DataTransmissionPC.cpp

#include "DataTransmissionPC.h"
DataTransmissionPC::DataTransmissionPC(ISerialPC* _iSerial) : DataTransmission(_iSerial) {}

ISerialPC.h

#include "DataTransmissionPC.h"
#include "DataTransmissionPC.h"
class ISerialPC : public ISerial {
    QSerialPort* initializationArduinoDevice();
public:
    ISerialPC();
QSerialPort* arduino;
void iWrite(const byte* val) override;
bool iWaitForReadyRead(int time) override;

ISerialPC.cpp

#include "ISerialPC.h"
ISerialPC::ISerialPC() {
    arduino = initializationArduinoDevice();
}
void ISerialPC::iWrite(const byte* val) {
    arduino->write();
}
bool ISerialPC::iWaitForReadyRead(int time = 30000) {
    return arduino->waitForReadyRead(time);
}
QSerialPort* ISerialPC::initializationArduinoDevice() {
//много кода....
}

DataTransmissionBeb.h

class ISerial { 
public:
    virtual void iWrite(const byte* val) = 0;
    virtual bool iWaitForReadyRead(int time) = 0;
};

class DataTransmission {
protected:
    const size_t sizeSendBuf = 256;
    const size_t sizeReceivedBuf = 512;

    byte* sendMes = new byte[sizeSendBuf];
    byte* receivedMes = new byte[sizeReceivedBuf];
public:
    ISerial* iSerial;
    void clearBufMes(byte* mes, size_t& sizeMes);
    DataTransmission(ISerial* _iSerial);
    ~DataTransmission();
};

DataTransmissionBeb.cpp

#include <DataTransmissionBeb/src/DataTransmissionBeb.h>
DataTransmission::DataTransmission(ISerial* _iSerial) {
    iSerial = _iSerial;
    clearBufMes(sendMes, sizeSendMes);
    clearBufMes(receivedMes, sizeReceivedMes);
}

main.cpp

#include "ISerialPC.h"
int main(int argc, char *argv[]) {
    ISerialPC *iArduino = new ISerialPC;
    DataTransmissionPC* dateTrans = new DataTransmissionPC(iArduino);

    delete dateTrans;
    delete iArduino;
}

Ошибки: 1)

...\DataTransmissionPC.h:14: ошибка: expected ')' before '*' token
In file included from ISerialPC.h:3:0,
                 from main.cpp:9:
DataTransmissionPC.h:14:33: error: expected ')' before '*' token
     DataTransmissionPC(ISerialPC* _iSerial);
                             
  1. ...\main.cpp:20: ошибка: no matching function for call to 'DataTransmissionPC::DataTransmissionPC(ISerialPC*&)' main.cpp: In function 'int main(int, char**)': main.cpp:20:68: error: no matching function for call to 'DataTransmissionPC::DataTransmissionPC(ISerialPC*&)' DataTransmissionPC* dateTrans = new DataTransmissionPC(iArduino);

  2. ...\ISerialPC.h:3: In file included from ISerialPC.h:3:0, In file included from ISerialPC.h:3:0, from main.cpp:9: DataTransmissionPC.h:8:7: note: candidate: constexpr DataTransmissionPC::DataTransmissionPC(const DataTransmissionPC&) class DataTransmissionPC : public DataTransmission { ^~~~~~~~~~~~~~~~~~ DataTransmissionPC.h:8:7: note: no known conversion for argument 1 from 'ISerialPC*' to 'const DataTransmissionPC&'

  3. ...\DataTransmissionPC.h:14: ошибка: expected ')' before '' token In file included from ISerialPC.h:3:0, from ISerialPC.cpp:1: DataTransmissionPC.h:14:33: error: expected ')' before '' token DataTransmissionPC(ISerialPC* _iSerial);

  4. :-1: ошибка: [Makefile.Debug:438: debug/main.o] Error 1

Что я сделал тут не так, и как надо подобное делать?

Ответы

Ответов пока нет.