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

Конструктор Шредингера "нет подходящего конструктора по умолчанию", хотя он есть

08.03.2015, 11:45. Показов 2168. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
собственно, код. на 156-й строке ( cont(circi) ругается на отсутствие конструктора в классе.
но он там есть! я его видел!
а если серьезно, то у меня нет идей, что может не нравится в таком конструкторе ( cont (circ &part) )
программа должна выводить, пересекаются ли окружности, затем объект со сравнением, координатами и радиусом записывать в хранилище
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
#include<stdio.h>
#include<math.h>
#include<iostream>
#include<string.h>
#include<clocale>
using namespace std;//var27
 
class info//окружность
{   
    private:
        float rad, x, y;
    public:
        info () {rad=5;x=y=0;}
        info (float a) {rad=a;x=y=0;}
        info (float q,float w) {rad=5;x=q;y=w;}
        info (float a,float q,float w) {rad=a;x=q;y=w;}
        float outr () {return rad;}
        float outx () {return x;}
        float outy () {return y;}
};
 
class circ//две сравниваемые окружности и сам процесс
{
    private:
        info circ1,circ2;
    public:
        float dlin ()
        {
            return pow(pow(circ1.outx()-circ2.outx(),2)+pow(circ1.outy()-circ2.outy(),2),1/2);
        }
        int end () 
        {
            if ((circ1.outr()+circ2.outr()<=dlin())&&(circ1.outr()<circ2.outr()+dlin())&&(circ2.outr()<circ1.outr()+dlin()))
                return (true);
            else
                return (false);
        }
        void vvod1(int a)
        {
            if (a==1)
                info circ1();
            else 
                if (a==2)
                {
                    float z;cin>>z;
                    info circ1(z);
                }
                else
                    if (a==3)
                    {
                        float z;cin>>z;
                        float b;cin>>b;
                        info circ1(z,b);
                    }
                    else
                        if (a==4)
                        {
                            float z;cin>>z;
                            float b;cin>>b;
                            float c;cin>>c;
                            info circ1(z,b,c);
                        }
        }
        void vvod2(int a) 
        {
            if (a==1)
                info circ2();
            else 
                if (a==2)
                {
                    float z;cin>>z;
                    info circ2(z);
                }
                else
                    if (a==3)
                    {
                        float z;cin>>z;
                        float b;cin>>b;
                        info circ2(z,b);
                    }
                    else
                        if (a==4)
                        {
                            float z;cin>>z;
                            float b;cin>>b;
                            float c;cin>>c;
                            info circ2(z,b,c);
                        }
        }
        /*
        void outr1(){circ1.outr();}
        void outx1(){circ1.outx();}
        void outy1(){circ1.outy();}
        void outr2(){circ2.outr();}
        void outx2(){circ2.outx();}
        void outy2(){circ2.outy();}*/
};
 
struct box//элемент односвязного списка для класса-контейнера
{
    circ all;
    box *next;
};
 
class cont//класс-контейнер
{
    private:
        box *top, *q;
        bool doom;
    public:
        cont (circ &part) 
        {
            if (doom!=true) 
            {
                top=new box;
                top->next=NULL;
                top->all=part;
                doom=true;
            }
            else
            {
                q=new box;
                q->next=top;
                top=q;
                top->all=part;
            }
        }
};
 
 
void main()
{
    setlocale(LC_ALL, "RUS");
    circ circi;
    int a, b;
    cout<<"Введите кол-во сравнений.\n";
    cin>>b;
    for(int i=0;i<b;i++)
    {
        a=0;
        while((a<1)||(a>4))
        {
            cout<<"Первая окружность. Введите 1 для стандартных координат и радуса(5;0.0), \n2 для изменения лишь радуса, 3 только координат, 4 радиусa и координат. \n";
            cin>>a;
            circi.vvod1(a);
            if ((a<1)||(a>4)) cout<<"введено неверное значение\n";
        }
        a=0;
        while((a<1)||(a>4))
        {
            cout<<"Вторая окружность. Введите 1 для стандартных координат и радуса(5;0.0), \n2 для изменения лишь радуса, 3 только координат, 4 радиусa и координат. \n";
            cin>>a;
            circi.vvod2(a);
            if ((a<1)||(a>4)) cout<<"Введено неверное значение!!!\n";
        }
        cont(circi);
        if ( circi.end()==1 ) cout<<"окружности пересекаются"; else cout<<"окружности не пересекаются";
    }
    system("pause");
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.03.2015, 11:45
Ответы с готовыми решениями:

Visual жалуется на конструктор "Error C2512: нет подходящего конструктора по умолчанию"
Привет, мне Visual C++ выдал такие ошибки делаю все как в уроке, пытаюсь описать класс в заголовочном файле, вот код с...

Нет подходящего конструктора по умолчанию
Всем привет :) Есть вот такой код#include &lt;vector&gt; #include &lt;SFML/Graphics.hpp&gt; using namespace sf; class Animation { public:...

Нет подходящего конструктора по умолчанию
У меня класс, где я хочу сделать конструктор с параметром по умолчанию, но он почему-то не принимает его за конструктор по умолчанию, и...

8
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,246
08.03.2015, 12:34
Цитата Сообщение от Daniil Посмотреть сообщение
cont(circi);
При объявлении надо указывать имя экземпляра.
C++
1
cont  cont1(circi);
Только какой в этом смысл? Вы нигде не используете этот экземпляр.

41 строка
Цитата Сообщение от Daniil Посмотреть сообщение
if (a==1)
info circ1();
circ1 уже объявлена как info.
Что Вы хотели этой строкой сказать?

Аналогично
Цитата Сообщение от Daniil Посмотреть сообщение
info circ2();
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
30
31
32
33
34
35
 void vvod1(int a)
  {
        switch(a)
        {
            case 1:
                circ1.rad=circ1.x=circ1.y=0;
                break;
            case 2:
            {
                float z;cin>>z;
                circ1.rad=z;
                circ1.x=circ1.y=0;
                break;
            }
            case 3:
            {
                float z;cin>>z;
                circ1.rad=z;
                float b;cin>>b;
                circ1.x=b;
                circ1.y=0;
                break;
            }
            case 4:
            {
                float z;cin>>z;
                circ1.rad=z;
                float b;cin>>b;
                circ1.x=b;
                float c;cin>>c;
                circ1.y=c;
                break;
            }
       } // конец switch
  }
И не забыть в info
C++
1
    friend class circ;
1
 Аватар для Martein
704 / 109 / 21
Регистрация: 22.06.2014
Сообщений: 241
08.03.2015, 12:38
А что конкретно вам хочется, чтобы происходило в этой строке?
cont(circi); - это что вообще такое?
0
1 / 1 / 0
Регистрация: 02.05.2014
Сообщений: 37
08.03.2015, 12:50  [ТС]
zss,
цирк1 объявлен как инфо в классе, с мейном он не связан. я в классе и теле могу одинаковые переменные создать, ничего страшного не произойдет.
на вход подается от 1 до 4 в зависимости от этого выполняется один из четырех конструкторов.
(info circ1() это конструктор по умолчанию.


Цитата Сообщение от Martein Посмотреть сообщение
А что конкретно вам хочется, чтобы происходило в этой строке?
cont(circi); - это что вообще такое?
мне хочется чтобы в контейнер сохранился объект, содержащий пару окружностей
Цитата Сообщение от zss Посмотреть сообщение
Сообщение от Daniil
cont(circi);
При объявлении надо указывать имя экземпляра.
Код C++
1
cont *cont1(circi);
Только какой в этом смысл? Вы нигде не используете этот экземпляр.
боюсь, что я вас не понял
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,246
08.03.2015, 12:58
Лучший ответ Сообщение было отмечено Daniil как решение

Решение

cont это имя типа (такое же, как и int, например).
Чтобы создать экземпляр надо его объявить
C++
1
cont cont1(circi);
Объявляете переменную cont1 типа cont и инициализируете ее используя
конструктор cont (circ &part)

Кстати первой строкой кода в конструкторе у Вас идет
if (doom!=true)
А doom еще ничего не присвоено!
1
1 / 1 / 0
Регистрация: 02.05.2014
Сообщений: 37
08.03.2015, 13:06  [ТС]
Цитата Сообщение от zss Посмотреть сообщение
cont это имя типа (такое же, как и int, например).
Чтобы создать экземпляр надо его объявить
Код C++
1
cont cont1(circi);
Объявляете переменную cont1 типа cont и инициализируете ее используя
конструктор cont (circ &part)
хахаха спасибо большое, такая глупая ошибка:-)

Цитата Сообщение от zss Посмотреть сообщение
Кстати первой строкой кода в конструкторе у Вас идет
if (doom!=true)
А doom еще ничего не присвоено!
если doom есть ничто, то оно не равно true.
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,246
08.03.2015, 13:09
Цитата Сообщение от Daniil Посмотреть сообщение
то оно не равно true
Кто это Вам сказал?
До тех пор, пока Вы явно не присвоили или непроинициализировали переменную,
в ней находится мусор (любое значение). В данном случае - любое из (true,false).
Кстати конструктор запускается всего один раз. Поэтому можете убрать if и
оставить код, который инициализирует ВСЕ переменные класса.
А остальное перенесите в какой-то другой метод, например обозванный как
C++
1
void Set();
Да и код контейнера Вы еще не дописали.
Пока что там нет ни одного метода, кроме этого конструктора.
1
1 / 1 / 0
Регистрация: 02.05.2014
Сообщений: 37
08.03.2015, 13:14  [ТС]
Цитата Сообщение от zss Посмотреть сообщение
Кто это Вам сказал?
мне казалось это логичным.
Цитата Сообщение от zss Посмотреть сообщение
До тех пор, пока Вы явно не присвоили или непроинициализировали переменную,
в ней находится мусор (любое значение). В данном случае - любое из (true,false)
спасибо, учту на будущее!
0
1 / 1 / 0
Регистрация: 02.05.2014
Сообщений: 37
11.03.2015, 07:43  [ТС]
Выяснилось что он запускается не один раз. дело в том, что при проверки на пересечение проверяется всегда две окружности, которые строятся из конструктора по умолчанию. и в объекте тоже записаны постоянно они, несмотря на то, что вход в vvod1 и 2 осуществляется и значения меняются, после выхода из метода вновь применяется конструктор по умолчанию, хотя и не прописан ни в одной строке после.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.03.2015, 07:43
Помогаю со студенческими работами здесь

Нет подходящего конструктора по умолчанию
#ifndef ANIMATION_H #define ANIMATION_H #include &lt;SFML\Graphics.hpp&gt; class animation { public: std::vector&lt;sf::IntRect&gt;...

Нет подходящего конструктора по умолчанию
Не могу взять в толк, почему ругается на отсутствие конструктора по умолчанию, ведь я их прописал в обеих классах #include...

Нет подходящего конструктора по умолчанию
написал вот такой код // ConsoleApplication29.cpp: определяет точку входа для консольного приложения. // #include...

Нет подходящего конструктора по умолчанию
Пишу таблицу(которая по факту является массивом), содержащую информацию о владельцах продаваемых квартир(class PurchaseData)....

Нет подходящего конструктора по умолчанию. Наследование
Скидываю хидер и исходник к нему: хидер(Main_Menu.h): #include &quot;stdafx.h&quot; #ifndef MAIN_MENU_DEF #define MAIN_MENU_DEF 1 ...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru