Наследование конструктора от конструктора родительского класса в библиотеке

jazz323
Offline
Зарегистрирован: 23.10.2016

При создании проекта появилась необходимость создания новой библиотеки. При сборе в общем коде все работает правильно, но после разбиения для библиотеки ругается. Помогите правильно объявить конструктор класса, который наследуется от родительского класса. Объединенный код:

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
Ошибка компиляции.
 
 
qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016
jazz323
Offline
Зарегистрирован: 23.10.2016

У меня же вроде так и написано в общем файле(без разбиения). И да, там все работает. Я не знаю как обьявить этот конструктор в h-файле.

uni
uni аватар
Offline
Зарегистрирован: 24.09.2015

Убрать вызов конструктора AMatModel() из строчки в h-файле: MatModel(int an):AMatModel(an);  , просто поставить там точку с запятой.

jazz323
Offline
Зарегистрирован: 23.10.2016

Спасибо большое. Правда я минуты 3 назад так и сделал)