cannot instantiate abstract class
Показано с 1 по 3 из 3

Тема: cannot instantiate abstract class

  1. #1

    Регистрация
    07.02.2018
    Сообщений
    2
    Благодарности
    Получено: 1
    Отправлено: 1

    cannot instantiate abstract class

    Добрый день. Я пытаюсь создать объект:

    Код:
       TransFunction tf1=new SigmoidalFunc();
       TransFunction tf2=new Threshold();
    Но при компиляции ругается: "'tf1' - cannot instantiate abstract class NeuroNetDemo.mq5".
    Подскажите, пожалуйста как лечить?
    Классы объедены так:
    Код:
    interface TransFunction
    {
    
       public:
       
            /// <summary>
            /// Рассчитать передатчоную функцию
            /// </summary>
            /// <param name="a_income">Передаваемое значение</param>
            /// <returns>Результат расчета</returns>
            double compute(double a_income);
       
    
    };
    
    class Threshold : public TransFunction
      {
    private:
    
    public:
    
            /// <summary>
            /// Рассчитать передаточную функцию
            /// </summary>
            /// <param name="a_income">Передаваемое значение</param>
            /// <returns>Результат расчета</returns>
            double compute(double a_income)
            {
                if (a_income > 0)
                {
                    return 1;
                }
                else
                {
                    return 0;
                }
            }
    
             Threshold();
            ~Threshold();
      };
    
    class SigmoidalFunc : public TransFunction
      {
    private:
    
    public:
    
            /// <summary>
            /// Константа сигмоидальной функции
            /// </summary>
            double a;
            
            /// <summary>
            /// Рассчитать передаточную функцию
            /// </summary>
            /// <param name="a_income">Передаваемое значение</param>
            /// <returns>Результат расчета</returns>
            double compute(double a_income);
            
            SigmoidalFunc();        
            ~SigmoidalFunc();
      };
    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
    SigmoidalFunc::SigmoidalFunc()
      {
       a=1;
      }
    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
    SigmoidalFunc::~SigmoidalFunc()
      {
      }
    //+------------------------------------------------------------------+
    
    double SigmoidalFunc::compute(double a_income)
    {
       return 1.0 / (1.0 + exp(-a * a_income));
    }

    Вы не можете благодарить!

  2. #2

    Регистрация
    14.02.2018
    Сообщений
    4
    Благодарности
    Получено: 2
    Отправлено: 3
    Объяви, как указатели:
    TransFunction* tf1=new SigmoidalFunc();
    TransFunction* tf2=new Threshold();

    Вы не можете благодарить!

  3. #3

    Регистрация
    07.02.2018
    Сообщений
    2
    Благодарности
    Получено: 1
    Отправлено: 1
    Спасибо. Помогло.

    Вы не можете благодарить!

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •