Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
1 / 1 / 0
Регистрация: 23.11.2010
Сообщений: 136

Функция не использует параметры конструктора

01.06.2019, 19:15. Показов 2959. Ответов 46

Студворк — интернет-сервис помощи студентам
Engine.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
namespace Engine
{
    class ICE
 
    {
    public:
        
            std::vector<int> M_init;
        std::vector<int> V_init;
 
        ICE(std::vector<int> M_init1, V_init1;)
 
        {
            M_init = M_init1;
            V_init = V_init1;
 
        };
    void print()
        {
            for (int i = 0; i < M_init.size(); i++) 
            {
                std::cout << M_init[i] << " "; 
                std::cout << V_init[i] << " ";
            }
                
        }
    };
 
}

C++
1
2
3
4
5
6
7
8
9
10
11
int main()
{
    
    std::vector<int> M1_init = { 20, 76, 100, 105, 74, 0 };
    std::vector<int> V1_init = { 20, 76, 100, 105, 74, 0 };
    Engine::ICE ICE_Inst(M1_init, V1_init); //not work empty
 
    double time_cnt = Dyno::Engine_Init<Engine::ICE >(ICE_Inst, Temp_Env).Engine_Work();  
 
    
}
Dyno.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
namespace Dyno
{
 
template<class T>
    class Engine_Init
    {
    public:
        T engine; 
 
        Engine_Init(T engine, double Temp_Env);
        double Engine_Work(bool flag);
 
    };
    
    
        Engine_Init<T>::Engine_Init(T engine, double Temp_Env)
    {
        T_Engine = Temp_Env;
        this->Temp_Env = Temp_Env;              
    }
    
}
No appropriate default constructor available
Есть класс Engine с конструктором из двух параметров. Но по какой то причине функция из другого неймпспейса
Dyno::Engine_Init<Engine::ICE >(ICE_Inst, T_Env).Engine_Work(1) в главном меню не использует векторы V_init, M_init из main-функции, задаваемые в Engine_Init извне.
Да, могу поменять ICE(std::vector<int> M_init1 , std::vector<int> V_init1 ) {} на ICE(std::vector<int> M_init1={1,2,3} , std::vector<int> V_init1={1,2,3} )
И он будет использовать именно эти числа, а не то, что я передал из main-функции.
Кстати, функция print выдает, как нужно именно, значения из main
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.06.2019, 19:15
Ответы с готовыми решениями:

Параметры конструктора
Доброй ночи всем. Учусь, набираю, понимаешь, себе код.... и вдруг такая непонятка!!!!!!!!!! Обьясните, кто знает, пожалуйста. вот...

Параметры конструктора по умолчанию
Привет! Подскажите, что я делаю не так. Создал класс Monstr, как в книжке написано, вот исходники: Monstr.h: #pragma once ref...

В связанных списках ошибка - параметры конструктора не задекларированы
На 26 строке выдает ошибку - PersonLinkedList.cpp\unorderedLinkedList.h|26|error: 'first' was not declared in this scope| А также не...

46
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
02.06.2019, 20:04
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от streamc Посмотреть сообщение
На данном примере исправляю на
и снова нет использования параметра enginex. Значит поле останется не инициализированым. Только не пишите, что у вас всё хорошо, а в топике снова опечатка. То есть, вы не понимаете как работают конструкторы полей под управлением конструктора класса. Не наследование ни шаблоны трогать ещё нельзя.
Цитата Сообщение от streamc Посмотреть сообщение
Хотя шаблоны это не меняют.
меняют. Но нужен опыт для того чтобы определить интерфейс и отделить его от наборов частных параметров так, чтобы в обобщённых алгоритмах не было необходимости обращаться к этим частностям. Пока вполне достаточно было бы не шаблонного класса содержащего поле ICE. Что толку в шаблоне пока вы не видите десятка разновидностей, - дизель, карбюраторный, инжекторный, роторный (Ванкеля, например), электрический, комбинированные (семейство), пропеллерный, реактивный, фотонный и пр. И в следствие, не видите для них обобщения в контексте решаемой задачи. В хорошем проекте, чтобы понять его структуру и уточнить техзадание, полезно сначала решить в конкретных типах. Тогда уже легче будет параметризовать.
0
1 / 1 / 0
Регистрация: 23.11.2010
Сообщений: 136
02.06.2019, 20:21  [ТС]
Цитата Сообщение от IGPIGP Посмотреть сообщение
и снова нет использования параметра enginex. Значит поле останется не инициализированым.
Не понял
C++
1
2
3
4
5
6
Engine_Init::Engine_Init(Engine::ICE  enginex_, double T_Env) 
    {       
        enginex = enginex_;
        T_Engine = T_Env;
        this->T_Env = T_Env;                
    }
А это что? Нет, тут, как раз не опечатка
Опечатки касались вещей не главных.
Цитата Сообщение от IGPIGP Посмотреть сообщение
интерфейс и отделить его от наборов частных параметров так, чтобы в обобщённых алгоритмах не было необходимости обращаться к этим частностям
Ох, еще и интерфейс, но да, это основная цель шаблонов, кто ж спорит то.
Цитата Сообщение от IGPIGP Посмотреть сообщение
пока вы не видите десятка разновидностей
Да, цель задания была, чтобы стенд можно было под другие двигатели переделать.
Но тут, ИМХО, не факт, что требуются шаблоны сразу, а не одни лишь классы или подклассы.
Цитата Сообщение от IGPIGP Посмотреть сообщение
. И в следствие, не видите для них обобщения в контексте решаемой задачи.
Да, согласен. Скажем, тот же ДВС разделить на несколько типов и подтипов (дизель, ванкель, Аткинсо, Отто, .... , обычный, обычный с турбиной, , а потом уже добавлять. И даже марки могут быть разные у двигателей или некоторые версии одного двигателя.
Цитата Сообщение от IGPIGP Посмотреть сообщение
полезно сначала решить в конкретных типах
Очень хорошо.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
02.06.2019, 22:10
Цитата Сообщение от streamc Посмотреть сообщение
А это что? Нет, тут, как раз не опечатка
У вас со зрением как? В посте где вы пишете:
Цитата Сообщение от streamc Посмотреть сообщение
На данном примере исправляю на
вы показываете код:
C++
1
2
3
4
5
Engine_Init::Engine_Init(Engine::ICE  enginex, double T_Env) 
    {       
        T_Engine = T_Env;
        this->T_Env = T_Env;                
    }
а теперь пишете: -"не понял". И код:
C++
1
2
3
4
5
6
Engine_Init::Engine_Init(Engine::ICE  enginex_, double T_Env) 
    {       
        enginex = enginex_;
        T_Engine = T_Env;
        this->T_Env = T_Env;                
    }
после того как вас ткнули а то что enginex так и не был инициализирован. А ещё удивляетесь, что для того чтобы вам объяснить что-то нужно по десять раз повторять. А потом еще десять раз. Про константные ссылки и списки инициализаци, видимо и 100 раз недостаточно.
Цитата Сообщение от streamc Посмотреть сообщение
Ох, еще и интерфейс, но да, это основная цель шаблонов, кто ж спорит то.
Не охайте. Интерфейс и при наследовании - главная задача, но решается иначе. И в простом классе тоже. Проблема не в конструкторе и не в том, что задача вам не понятна. Проблема в этом вашем
Цитата Сообщение от streamc Посмотреть сообщение
Ох
Остальное, технически преодолимо.
0
1 / 1 / 0
Регистрация: 23.11.2010
Сообщений: 136
03.06.2019, 04:40  [ТС]
enginex был инициализирован в посте 40 и архиве поста 39. Пока я писал пост 39 цитируемый вами, убрал спецом инициализацию из одного места и хотел в другое перенести, но возможность редактирования пропала. Вот и всё. Поста 40 не было бы , будь возможность редактирования поста 39.
Цитата Сообщение от IGPIGP Посмотреть сообщение
Не охайте. Интерфейс и при наследовании - главная задача, но решается иначе. И в простом классе тоже
Да, интерфейс, как общий класс, без конкретного исполнения, вы писали про это. Я не по этому поводу ох написал. Я про другое подумал), чего в C++ и нет. Ну, скажем, если бы тут еще было бы слово interface.
А здесь работа с классами, как общими, так и конкретными.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
03.06.2019, 10:33
Цитата Сообщение от streamc Посмотреть сообщение
Пока я писал пост
Цитата Сообщение от streamc Посмотреть сообщение
но возможность редактирования пропала. Вот и всё.
Опять форум наделал вам в панталоны. И я конечно. Ведь как только появился ваш пост где вы опять написали ошибку я сразу начал отвечать и уже не мог видеть того, что вы в следующем посте исправили. А архив смотреть вряд ли будут много людей. Итого, - читать последовательно это всё невозможно. И опять разгильдяйство.
Цитата Сообщение от streamc Посмотреть сообщение
Да, интерфейс, как общий класс, без конкретного исполнения, вы писали про это.
Это программная реализация идеи интерфейса (концепции интерфейса как такового), называемая абстрактным классом. Базируется на механизме наследования. Не путать с т.н. реализацией интерфейса (очень неудачный термин бытующий сегодня). Под реализацией интерфейса предлагается понимать - внутренние механизмы которые обеспечивают решение задачи под управлением данного интерфейса. Лучше бы назвать это как-то вроде "исполнительный механизм". А сами интерфейс в программном смысле есть и у функций и у классов. У функций он реализован набором параметров и типом возврата, например. А у классов его можно реализовать открытой для доступа частью. А вот обобщения интерфейсов для групп классов, можно реализовать по разному. Можно создать группу классов ни чем не связанных, но реализующих один и тот же интерфейс. Например метод void Do() , Использовать его трудно, но можно. Для упрощения есть механизмы наследования и шаблонов. Они реализуют предоставляемые интерфейсы по разному. Это программная (внутренняя часть вопроса).
Важнее всего понять сначала предметную, - внешнюю часть - объектную модель. Именно там, все удачные решения останутся незамеченными неблагодарными потомками, но каждая неудача станет настоящей болью. То есть, есть группа родственных объектов (физических носителей данных которые будут отображены в программные объекты). Есть задача - модель в который данная группа будет описана. Теперь нужно понять, какие характеристики и свойства поведения (операции) указанных объектов, являются общими в данной задаче (в моделях, а далее и алгоритмах которые описывают всю задачу как объект) . Это интерфейс внешний, он должен быть предоставлен объектами и принят алгоритмами задачи. Его нужно выразить (реализовать). Если вы обоснованно хотите это сделать шаблонами, то задача грандиозна (имхо). Это значит что там придётся комбинировать все виды полиморфизма. Однако, вероятно, она потребует ряда эскизных решений в простых типах. И станет ясно, что у парусных и реактивных двигателей нет ни частоты ни крутящего момента. Следовательно, попытка зашить в обобщенный параметризованный шаблонный класс (это не класс, но неудачные термины - фишка математики, - это шаблон классов) обращение к методам с частотой и крутящим моментом вызовет необходимость специализаций. Тут есть пути решения, но сначала нужно убедиться в том, что данные конкретные отличие нельзя спрятать от обобщения внутрь (путём наследования скажем).
Но сначала имеет смысл научиться работать с простыми классами и их композициями. Уровень подготовки не должен отличаться от уровня решаемой задачи на порядок и более. И тогда вопросы будут лаконичнее и четче. О том что писать нужно аккуратнее - отдельный разговор. Для того чтобы задать вопрос нужно самому по отвечать и тогда легко можно поставить себя на место отвечающего. Вот и всё, как вы говорите.
0
1 / 1 / 0
Регистрация: 23.11.2010
Сообщений: 136
03.06.2019, 10:44  [ТС]
IGPIGP, спасибо.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
03.06.2019, 11:36
Цитата Сообщение от streamc Посмотреть сообщение
IGPIGP, спасибо.
Если, это вам поможет, - пожалуйста. Чем черт не шутит? Я в каком-то смысле, хоть и сдержанный, но оптимист.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.06.2019, 11:36

string обьявленый в классе передать в параметры конструктора
class String{ char str; string str2; public: String(char string){ strcpy(str,string); } String(string newStr){...

Задать параметры конструктора DateTime в произвольном порядке
Тут написано, что создать значение DateTime можно различными способами. Например, так: DateTime date1 = new DateTime(2008, 5, 1, 8, 30,...

Как открыть Query, который использует Вид, которому нужны параметры?
Привет многоуважаемый All! Ситуация такая. Есть Таблица . Есть Запрос . Вот его код: SELECT...

Как передать параметры конструктора одного класса другому?
Скажите пожалуйста, как это должно работать? Как передать параметры конструктора одного класса другому? #include &lt;iostream&gt; ...

Реализовать динамический массив объектов, учитывая, что параметры для конструктора у каждого объекта разные
Здравствуйте.Чёткого ответа на просторах интернета не нашёл , поэтому пишу сюда. Есть класс, нужен динамический массив объектов этого...


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

Или воспользуйтесь поиском по форуму:
47
Ответ Создать тему
Новые блоги и статьи
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
Сукцессия 20. Война автоботов. Делаем ставки. Лёд против "пш-пш!".
anaschu 11.07.2026
Битва ИИ в ризосфере: Как мы скрестили жесткие ОДУ, закон Фика и «подземный шантаж» Уважаемые коллеги! Хочу поделиться уникальным опытом ведения междисциплинарной компьютерной разработки. Прямо. . .
Сукцессия 19. Какие выводы я сделал из модели? Часть 2.Внутримикоризный стехиометрический буфер и хроно-дискретные зоны экспансии
anaschu 11.07.2026
Био-Инженерный Ликбез: Архитектура Модели Ризосферы Математический аппарат моделирования
Сукцессия 18. Какие выводы я сделал из войны грибов с деревьями? Часть 1- рассказ и немного про термины
anaschu 11.07.2026
Био-Инженерный Ликбез: Архитектура Модели Ризосферы Математический аппарат моделирования Система ОДУ описывает динамику изменения массы различных компонентов системы во времени. Ключевой. . .
Просветление в 5 секунд
kumehtar 10.07.2026
Андрей Веретенников выдал фразу недавно: "Вам не обязательно кем-то себя считать"
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru