Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 1
Регистрация: 05.02.2014
Сообщений: 141
1

Конструкторы с параметрами при множественном наследовании

01.05.2016, 18:25. Показов 1045. Ответов 3
Метки нет (Все метки)

у меня есть класс, quotes который является базовым для двух классов moving_average и rsi (наследуются от quotes чз virtual) эти два класса в свою очередь являются базовыми для класса analysis. и вот тут с ним у меня проблема.
analysis.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class analysis: public moving_average, public rsi {
    private:
    struct my_struct {
        std::string date;
        bool ma_buy;
        bool ma_sell;
        bool rsi_buy;
        bool rsi_sell;
    }analysis_stuct;
    std::vector<my_struct>vector_analysis;
    public:
    analysis(std::string& value,int s=20,int f=5,int rsi = 15):rsi(value,rsi){};
};
moving_average.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class moving_average:virtual public quotes{
    private:
    int s_ma;
    int f_ma;
    struct ma_struct {
      std::string date;
      float slow_ma, fast_ma;
    }ma_struct_ma;
    std::vector<ma_struct>vector_ma;
 
    public:
    moving_average(std::string& value,int s=20,int f=5):quotes(value){s_ma=s;f_ma=f;};//don't understand whaty have warning unused parametr - i use it in another function
    void get();
    void show();
    float take_ma(int r, int k);
    ~moving_average(){};
 
};
rsi.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class rsi: virtual public quotes{
 
    private:
    int rsi_period;
    struct my_rsi{
        std::string date;
        double rsi_index;
    }my_rsi_struct;
 
    std::vector<my_rsi>vector_rsi;
 
    public:
    rsi(std::string& value,int rsi=14):quotes(value){rsi_period=rsi;};//s(14) it-s period for rsi
    ~rsi(){};
    void get();
    void show();
    float take_rsi_index(int i);
 
};
ошибка:
/home/dima/QT_CPP/quotes/analysis.h:17: ошибка: 'class rsi rsi::rsi' is not a non-static data member of 'analysis'
analysis(std::string& value,int s=20,int f=5,int rsi = 15):rsi(value,rsi){};
^
подскажите пожалуйста, в какую сторону копать?
Спасибо.

Добавлено через 13 минут
не правильно указал код класса analysis
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class analysis: public moving_average, public rsi {
    private:
    struct my_struct {
        std::string date;
        bool ma_buy;
        bool ma_sell;
        bool rsi_buy;
        bool rsi_sell;
    }analysis_stuct;
    std::vector<my_struct>vector_analysis;
    public:
    analysis(std::string& value,int s=20,int f=5,int rsi = 15):moving_average(value,s,f), rsi(value,rsi){};
};
0

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

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.05.2016, 18:25
Ответы с готовыми решениями:

Конструктор при множественном наследовании
#include &lt;string&gt; class Worker // an abstract base class { private: std::string...

Неоднозначность при множественном наследовании
Привет всем, столкнулся с проблемой при множественном наследовании классов. Надеюсь, кто-нибудь...

Инициализация при множественном наследовании
Имеется иерархия типов. Во главе: базовый класс-интерфейс, далее один базовый класс, от него два...

Компилятор не видит класс при множественном наследовании
Есть два одноименных класса. Один класс - подкласс SomeClass. Другой класс - наследник первого...

3
6992 / 6030 / 2738
Регистрация: 14.04.2014
Сообщений: 25,792
01.05.2016, 19:00 2
Имя другое придумай для последнего параметра конструктора.
1
0 / 0 / 1
Регистрация: 05.02.2014
Сообщений: 141
01.05.2016, 19:29  [ТС] 3
nmcf, был у меня и такой вариант, увы.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#ifndef ANALYSIS_H
#define ANALYSIS_H
#include "moving_average.h"
#include "rsi.h"
 
class analysis: public moving_average, public rsi {
    private:
    struct my_struct {
        std::string date;
        bool ma_buy;
        bool ma_sell;
        bool rsi_buy;
        bool rsi_sell;
    }analysis_stuct;
    std::vector<my_struct>vector_analysis;
    public:
    analysis(std::string& value,int s=20,int f=5,int rsi = 15):quotes(value),moving_average(value,s,f), rsi(value,rsi_i){};
};
 
#endif // ANALYSIS_H
ошибка :
/home/dima/QT_CPP/quotes/analysis.h:17: ошибка: 'class rsi rsi::rsi' is not a non-static data member of 'analysis'
analysis(std::string& value,int s=20,int f=5,int rsi = 15):quotes(value),moving_average(value,s,f), rsi(value,rsi_i){};
^
ааааа.... все понял )))) спс )

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#ifndef ANALYSIS_H
#define ANALYSIS_H
#include "moving_average.h"
#include "rsi.h"
 
class analysis: public moving_average, public rsi {
    private:
    struct my_struct {
        std::string date;
        bool ma_buy;
        bool ma_sell;
        bool rsi_buy;
        bool rsi_sell;
    }analysis_stuct;
    std::vector<my_struct>vector_analysis;
    public:
    analysis(std::string& value,int s=20,int f=5,int rsi_i = 15):quotes(value),moving_average(value,s,f), rsi(value,rsi_i){};
};
 
#endif // ANALYSIS_H
гран мерси )))) мой лапша код для курсовой ))) вроде закончен , спасибо Вам дяденька большое...
0
С чаем беда...
Эксперт CЭксперт С++
9165 / 4681 / 1271
Регистрация: 18.10.2014
Сообщений: 10,593
01.05.2016, 21:05 4
Цитата Сообщение от DimaAvatar Посмотреть сообщение
'class rsi rsi::rsi' is not a non-static data member of 'analysis'
Ситуация не имеет никакого отношения к множественному наследованию.

Известный "трюк" с использованием того же имени для параметра конструктора, что и для члена класса

C++
1
2
3
4
5
struct S {
  int x;
  S(int x) : x(x) // Поле S::x инициализируется значением параметра x
    {}
};
применим только к инициализации нестатических полей, но не применим к инициализации базовых подобъектов. Поэтому если в классе есть база rsi, то инициализировать ее параметром по имени rsi не получится. (Тема несколько мутноватая, кстати, и, похоже, требует дополнительного исследования.)
3
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.05.2016, 21:05

Конфликт имен при множественном наследовании struct
Уважаемые гуру, помогите разрешить конфликт имён в приведённом ниже примере, не изменяя структуру...

Помогите найти ошибку при множественном наследовании
Помогите разобраться в наследовании Прилагаю код #include &lt;iostream&gt; using namespace...

Порядок вызова конструкторов при множественном наследовании
Здравствуйте, меня интересует вопрос, как изменить последовательность вызова конструкторов базовых...

При множественном наследовании не работает getline(std::cin, ?)
Изучаю множественное наследование, так вот, нужно ввести два слова, но программа просто пропускает ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.