Создание экземпляра переменной класса без его инициализации: неизвестный спецификатор переопределения - PullRequest
0 голосов
/ 27 мая 2020

Я пытаюсь создать объект своего класса ArduinoControl в качестве переменной класса в моем классе QT QMainWindow. Я включил файл заголовка ArduinoControl в файл заголовка главного окна.

Я хочу объявить объект Arduino без его инициализации, это будет сделано в конструкторе объекта MainWindow, чтобы все функции могли получить доступ объект Arduino.

Это мой QMainWindowClass:

#pragma once

#include <QtWidgets/QMainWindow>
#include "ui_laserbasictestfunctions.h"
#include <QTextEdit>
#include <QLineEdit>
#include <QLabel>
#include "PrintBlock.h"
#include <stdio.h>
#include "ArduinoCommunication.h"
#include <QThread>
#include <QtTest/QtTest>   

 class LaserBasicTestFunctions : public QMainWindow
{
    Q_OBJECT

public:
    LaserBasicTestFunctions(QWidget *parent = Q_NULLPTR);
    void checkActivity();

private:
    Ui::LaserBasicTestFunctionsClass ui;
    int programNumber; 
    bool ok;    
    bool rotate;    
    char portName[11];  
    ArduinoCommunication tableControl;
private slots:
    //Tab#1 Laser Test Functions
    void on_coordinateSystemButton_clicked();
    void on_rectangleButton_clicked();
    void on_pointButton_clicked();
    void on_stopLaserButton_clicked();
    void on_startButton_clicked();
    //Tab#2 Print Block Functions
    void on_stopLaserButton_2_clicked();
    void on_startPrintBlockButton_clicked();
    //Tab#3 Arduino Functions
    void on_arduinoLEDButton_clicked();
}

Это заголовок Arduino Communication:

#pragma once

#include <iostream>
#include "SerialPort.h"
#include "ui_laserbasictestfunctions.h"
#include "laserbasictestfunctions.h"
#include <stdio.h>
#include <string.h>
#include <string>
class ArduinoCommunication {

private:
    Ui::LaserBasicTestFunctionsClass& ui_;

    int pin_piston1_;
    int pin_suction_cup_;
    int pin_led_;
    char incomingData_[MAX_DATA_LENGTH];
    SerialPort* arduino_;
    char* portname_;

    void connect_to();
    void receiveData();


public:
    ArduinoCommunication(char portname[], int pin_piston1, int pin_suction_cup, int pin_led, Ui::LaserBasicTestFunctionsClass& ui);
    ArduinoCommunication();
    void set_pin(int pin, bool high);
    void actuate_pistons(bool actuate);
    void actuate_suction_cup(bool actuate);
    void actuate_led(bool actuate);
};

Я получаю следующие сообщения об ошибках: 1. 'ArduinoCommunication' не подходит доступен конструктор по умолчанию 2. 'tableControl': неизвестный спецификатор переопределения 3. Отсутствующий описатель типа - предполагается int

Я попытался создать объект ArduinoCommunication в конструкторе QMainWindow, но затем мне не удалось получить к нему доступ через частный функции слота.

Любая помощь приветствуется!

...