Наследование конструктора от конструктора родительского класса в библиотеке
- Войдите на сайт для отправки комментариев
Вс, 23/10/2016 - 22:04
При создании проекта появилась необходимость создания новой библиотеки. При сборе в общем коде все работает правильно, но после разбиения для библиотеки ругается. Помогите правильно объявить конструктор класса, который наследуется от родительского класса. Объединенный код:
struct Vector
{
public:
Vector(){
};
int n;//=1;
float *VS;
void Init(int an){
n=an;
VS=new float [n];
}
Vector(int an){
Init(an);
}
};
void printVector(Vector Vec){
for (int i=0; i<Vec.n; i++)
Serial.println(Vec.VS[i]);
Serial.println();
};
class AMatModel {
public:
Vector Vec;
AMatModel(int an){
Vec.Init(an);
};
virtual Vector RParts(Vector Vec0, double t)=0;
// VecK.VS[3] = 1;// дописать получение ускоренний с акселерометра
// VecK.VS[4] = 0;
// VecK.VS[5] = 0;
//printVector(VecK);
// return VecK;
};
class MatModel : public AMatModel{
public :
MatModel(int an):AMatModel(an){
};
Vector RParts (Vector Vec0, double t){
Vector VecK(Vec0.n);
VecK.VS[0] = sin(t);//+
return VecK;
}
};
Вот после разбиения на h файл и cpp:
h-файл:
#ifndef MATH_MATMODEL_H_INCLUDED
#define MATH_MATMODEL_H_INCLUDED
#include "Arduino.h"
struct Vector
{
public:
Vector();
int n;
float *VS;
void Init(int an);
Vector(int an);
};
void printVector(Vector Vec);
class AMatModel {
public:
Vector Vec;
AMatModel(int an);
virtual Vector RParts(Vector Vec0, double t)=0;
};
class MatModel : public AMatModel{
public :
MatModel(int an):AMatModel(an);
Vector RParts (Vector Vec0, double t);
};
#endif // MATH_MATMODEL_H_INCLUDED
cpp-файл:
#include "Arduino.h"
#include "Math_MatModel.h"
void Vector::Init(int an){
n=an;
VS=new float [n];};
Vector::Vector(int an){
Init(an);
};
void printVector(Vector Vec){
for (int i=0; i<Vec.n; i++)
Serial.println(Vec.VS[i]);
Serial.println();
};
AMatModel::AMatModel(int an){
Vec.Init(an);
};
//virtual Vector AMatModel::RParts(Vector Vec0, double t)=0;
MatModel::MatModel(int an):AMatModel(an){
};
Vector MatModel::RParts (Vector Vec0, double t){
Vector VecK(Vec0.n);
VecK.VS[0] = sin(t);//+
return VecK;
};
Ошибка:
Arduino: 1.6.6 (Windows 10), Плата:"Arduino/Genuino Uno"
In file included from C:\Users\Алекскандр\Documents\Arduino\libraries\Math/Math_Int.h:4:0,
from C:\Users\Алекскандр\Documents\Arduino\Math_full\Math_full.ino:1:
C:\Users\Алекскандр\Documents\Arduino\libraries\Math/Math_MatModel.h: In constructor 'MatModel::MatModel(int)':
C:\Users\Алекскандр\Documents\Arduino\libraries\Math/Math_MatModel.h:22:32: error: expected '{' at end of input
MatModel(int an):AMatModel(an);
^
exit status 1
Ошибка компиляции.
Скорее всего так. http://arduino.ru/forum/programmirovanie/klass-protsessy-i-programma-blink-bottom#comment-209838
У меня же вроде так и написано в общем файле(без разбиения). И да, там все работает. Я не знаю как обьявить этот конструктор в h-файле.
Убрать вызов конструктора AMatModel() из строчки в h-файле:
MatModel(intan):AMatModel(an);, просто поставить там точку с запятой.Спасибо большое. Правда я минуты 3 назад так и сделал)