Я реализую библиотеки Automatak opendnp3 для C++. Я хочу добавить Master to a Channel .Как вы можете видеть из этого определения, параметр для этого действия:Реализация этого абстрактного класса с использованием объявления
...
opendnp3::IMasterApplication& appliction,
...
Интерфейс IMasterApplication описан here. Поэтому я создаю masterApplication.cpp и masterApplication.h файлы и попытка реализовать класс следующим образом:
masterApplication.cpp
#include "masterApplication.h"
#include <opendnp3/master/IMasterApplication.h>
#include <iostream>
#include <chrono>
using namespace opendnp3;
using namespace asiodnp3;
using namespace std;
masterApplication::masterApplication() {
}
masterApplication::~masterApplication() {
}
masterApplication.h
#ifndef MASTERAPPLICATION_H_
#define MASTERAPPLICATION_H_
#include <opendnp3/master/IMasterApplication.h>
#include <opendnp3/link/ILinkListener.h>
#include <openpal/executor/IUTCTimeSource.h>
class masterApplication : public opendnp3::IMasterApplication
{
private:
public:
masterApplication();
virtual ~masterApplication();
};
#endif
Но, когда я пытаюсь объявите объект mainApplication в моем основном пользовании:
masterApplication iMaster;
А затем pl асе, что в AddMaster функции , я получаю ошибку:
main.cpp:57:20: error: cannot declare variable ‘iMaster’ to be of abstract type ‘masterApplication’
masterApplication iMaster;
Что я недоразумение?
Вы реализовали все чистые виртуальные методы, объявленные в 'IMasterApplication', в классе' masterApplication'? – CinCout
Нет, я этого не делал? Я не объявлял ничего, кроме конструктора и деструктора. –
Да, это так. В противном случае 'masterApplication' остается абстрактным. – CinCout