Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
AnreyKazakov
Заблокирован
#1

Класс при инициализации выдает бяку =( - C++

01.10.2012, 18:44. Просмотров 223. Ответов 3
Метки нет (Все метки)

Пытался сделать класс, чтобы в зависимости от того, сколькими переменными он инициализирован (от 0 до 3), срабатывал один из конструкторов. Конструкторы работают, как и подобает, но вот инициализирующие значения, они почему-то на выходе извращенные какие-то... (ввожу 1 2 3)
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
#include <iostream>
using namespace std;
class veron1{
    public:
    veron1():k1(1),k2(1),k3(1){}
    veron1(int):k2(10),k3(10){}
    veron1(int,int):k3(100){}
    veron1(int,int,int){}
    int k1;
    int k2;
    int k3;
    bool operator()(int a){
        k1=a;
        return 0;
        }
    bool operator()(int a,int b){
        k1=a;k2=b;
        return 0;
        }
    bool operator()(int a,int b, int c){
        k1=a;k2=b;k3=c;
        return 0;
        }       
    };
int main(){
    int x1,x2,x3;
    class veron1 v1;
    cout<<"Enter three values: ";
    cin>>x1>>x2>>x3;
    cout<<"v1 "<<v1.k1<<" "<<v1.k2<<" "<<v1.k3<<endl;
    cout<<"add x1"<<endl;
    v1(x1);
    class veron1 v2(x1);
    cout<<"v1 "<<v1.k1<<" "<<v1.k2<<" "<<v1.k3<<endl;
    cout<<"v2 "<<v2.k1<<" "<<v2.k2<<" "<<v2.k3<<endl;
    cout<<"add x1 and x2"<<endl;
    v1(x1,x2);
    class veron1 v3(x1,x2);
    cout<<"v1 "<<v1.k1<<" "<<v1.k2<<" "<<v1.k3<<endl;
    cout<<"v3 "<<v3.k1<<" "<<v3.k2<<" "<<v3.k3<<endl;   
    cout<<"add all: x1,x2,x3"<<endl;
    v1(x1,x2,x3);
    class veron1 v4(x1,x2,x3);
    cout<<"v1 "<<v1.k1<<" "<<v1.k2<<" "<<v1.k3<<endl;
    cout<<"v4 "<<v4.k1<<" "<<v4.k2<<" "<<v4.k3<<endl;
    cout<<"The End =)"<<endl;
    return 0;
    }
ввожу 1 2 3
на выходе по задумке должно быть
v1 1 1 1 //ok
add x1
v1 1 1 1 //ok
v2 1 10 10 //выводит v2 2293728 10 10
add x1 and x2
v1 1 2 1 //ok
v3 1 2 100 //выводит v3 4201884 2293508 100
add all: x1,x2,x3
v1 1 2 3 //ok
v4 1 2 3 //выводит v4 14 0 0
Подскажите в чем фокус? откуда такая бяка? такое чувство что я что-то напутал....
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.10.2012, 18:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Класс при инициализации выдает бяку =( (C++):

Компилятор выдает предупреждение при инициализации строки:deprecated conversion from string constant to char* - C++
#include &lt;iostream&gt; using namespace std; int main() { char *s=&quot;abcd&quot;; cout &lt;&lt; s &lt;&lt; endl; // prints !!!Hello World!!! return...

Реализовать класс «Проект» и создать объекты данного класса с разными способами инициализации - C++
 -Объявить класс «Проект» с данными номер проекта, сумма, дата исполнения и определить для него конструктор по умолчанию, конструктор...

Ошибка нарушения прав доступа при чтении по адресу, возникающая при инициализации трехмерного массива - C++
Очень нужна ваша помощь! Я уже не знаю что тут можно сделать. Код части программы, где вылазит ошибка ниже. Коротко о проблеме: я...

Ошибка при инициализации - C++
На 3 и 4 строчку показывает отладчик при вылете. BADpixel *enemy; pixel *player; enemy = new BADpixel(75, 10, 10, player); ...

Класс - выдает ошибку - C++
прога по идее верная но компилятор выдает ошибку //--------------------------------------------------------------------------- ...

Конструктор копирования при инициализации - C++
При инициализации одного объекта через другой вызывается конструктор копирования, под динамическую область памяти выделяется своя...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
doctor_lecter
280 / 153 / 8
Регистрация: 22.09.2012
Сообщений: 283
01.10.2012, 18:48 #2
C++
1
2
3
veron1(int k1):k1(k1), k2(10),k3(10) {}
veron1(int k1,int k2):k1(k1), k2(k2), k3(100) {}
veron1(int k1,int k2,int k3): k1(k1), k2(k2), k3(k3) {}
У вас нигде не инициализировались поля, которые вы задаете.
Герц
524 / 341 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
01.10.2012, 18:48 #3
А чего ты хотел то, если ты не присваиваешь свои значения никуда?
AnreyKazakov
Заблокирован
01.10.2012, 18:57  [ТС] #4
Цитата Сообщение от doctor_lecter Посмотреть сообщение
1
2
3 veron1(int k1):k1(k1), k2(10),k3(10) {}
veron1(int k1,int k2):k1(k1), k2(k2), k3(100) {}
veron1(int k1,int k2,int k3): k1(k1), k2(k2), k3(k3) {}
Теперь работает =) с двух учебников сразу читаю, путаю =(
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.10.2012, 18:57
Привет! Вот еще темы с ответами:

Ошибка при инициализации массива - C++
Не понимаю, почему не работает. Массив создается после введения количества его элементов, но все равно компилятор ругается. Код работать...

Заполнение массива при инициализации - C++
Доброго времени суток. Имеется следующий код: struct ProcessInfo { HANDLE ProcessHandle; DWORD ProcessID; HANDLE...

Ошибка при инициализации regex_token_iterator - C++
Объясните почему тут ошибка ? #include &lt;iostream&gt; #include &lt;cstdio&gt; #include &lt;regex&gt; #include &lt;iterator&gt; using namespace...

Capacity при инициализации string - C++
Здравствуйте, подскажите, пожалуйста, возможно ли задать capacity при инициализации string. Спасибо.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
01.10.2012, 18:57
Ответ Создать тему
Опции темы

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