Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
AlexProg
1 / 1 / 0
Регистрация: 03.11.2012
Сообщений: 52
#1

что не так с конструктором с параметрами - C++

14.04.2013, 23:37. Просмотров 280. Ответов 4
Метки нет (Все метки)

создаю экземпляры класса , один через конструктор с параметрами но указываю параметрами он мне пишет ошибка что преобразования типов не допустимо , как мне исправит свою ошибку
Объявления класса
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
#pragma once
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <time.h>
using namespace std;
//класс матрица 
class Tabel
{
    int** Matrix;//указателдь на массив указателей , матрица 
    int AS;//размерность матрицы массива 
 
public:
    Tabel();//конструктор 
    Tabel(int** aMatrix,int aSize);//констуктор с параметрами 
    Tabel(Tabel &Arr);//конструктор копирования 
    ~Tabel();//деструктор 
 
    void operator=(Tabel &Arr);//перегрузка оператора присвоения 
    friend std::ostream& operator<<(std::ostream& out,Tabel & obj);//перегрузка оператора вывода в поток
 
    void ToFile();
    void FromFile();
    void RANDOM();//рандомизация 
 
    void SetSize(int aSize);
    void SetMatrix(int** aMatrix);
    int GetSize();
    int** GetMatrix();
 
    void ifk();
    void sum0();
};
реализация класса
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
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
#include "arr.h"
#include<iostream>
#include<iomanip>
using std::setw;
using namespace std;
Tabel::Tabel()
    {
        AS=0;
        Matrix=NULL;
    }
    Tabel::Tabel(int** aMatrix,int aSize)
    {
        AS=aSize;
        Matrix=aMatrix;
    }
    Tabel::Tabel(Tabel &Arr)
    {
        AS=Arr.GetSize();
        Matrix=Arr.GetMatrix();
    }
    Tabel::~Tabel()
    {
        for(int i=0; i<AS; ++i)
        {
            delete Matrix[i];
        }
        delete Matrix;
    }
 
    void Tabel::operator=(Tabel &Arr) //перегрузка оператора присваивания 
    {
        AS=Arr.GetSize();
        Matrix=Arr.GetMatrix();
    }
    std::ostream& operator<<(std::ostream& out,Tabel& obj)//перегрузка  оператора вывода в поток
    {
        for(int i=0; i<obj.GetSize(); ++i)
        {
            for(int j=0; j<obj.GetSize(); ++j)
            {
                out<<obj.GetMatrix()[i][j]<<" ";
            }
            out<<endl;
        }   
        return out;
    }
 
    void Tabel::ToFile()
    {       
        std::ofstream out("Matrix.txt");
        out<<this->AS<<' ';
        out<<this->AS<<endl;
        for(int i=0;i<AS;i++)
        {
            for(int j=0;j<AS;j++)
            {
                out.width(5);
                out<<Matrix[i][j];
            }
            out<<endl;
        }
    }
    void Tabel::FromFile()
    {
        this->~Tabel();
        Matrix=new int*[AS];
        for(int i=0; i<AS; i++)
        {
            Matrix[i]=new int[AS];
        }
        std::ifstream in("Matrix.txt");
        in>>this->AS;
        in>>this->AS;
        for(int i=0; i<AS; i++)
        {
            for(int j=0; j<AS; j++)
            {
                in>>Matrix[i][j];
            }
        }
    }
    void Tabel::RANDOM()//рандомизация 
    {
        srand(time(NULL));
        AS=5;
        Matrix=new int*[AS];
        for(int i=0; i<AS; ++i)
        {
            Matrix[i]=new int[AS];
        }
        for(int i=0; i<AS; ++i)
        {
            for(int j=0; j<AS; ++j)
            {
                Matrix[i][j]=rand()%10-1;
            }
        }
    }
 
    void Tabel::SetSize(int aSize)//установить размер 
    {
        AS=aSize;
    }
    void Tabel::SetMatrix(int** aMatrix)//установит матрицу 
    {
        Matrix=aMatrix;
    }
    int Tabel::GetSize()//получения размера матрицы 
    {
        return AS;
    }
    int** Tabel::GetMatrix()//получить матрицу
    {
        return Matrix;
    }   
 
    
    void Tabel::ifk()
    {
        int *ks=new int[AS];
        for(int i=0; i<AS; ++i)
        {
            ks[i]=0;
        }
        int h=0;
 
        for(int i=0; i<AS; ++i)
        {
            for(int j=0; j<AS; ++j)
        {
            if(Matrix[i][j]!=Matrix[j][i])
            {
                break;
            }
            ks[h]=i-1;
            h++;
        }
        }
            h=0;
            cout<<setw(4)<<ks[h]<<" ";
    /*      while(ks[h]!=0)
            {
                h++;
                cout<<ks[h]<<" ";
            }*/
            cout<<endl;
    }
    void Tabel::sum0()
    {
        int *tmp=new int[AS];
        for(int i=0; i<AS; ++i)
        {
            tmp[i]=0;
        }
 
        for(int i=0; i<AS; ++i)
        {
            for(int j=0; j<AS; ++j)
        {
            if(Matrix[j][i]<0)
            {
                for(int g=0; g<AS; ++g)
                {
                    tmp[i]+=Matrix[g][i];
                }
                break;
            }
        }
        }
 
        for(int i=0; i<AS; ++i)
        {
            cout<<"\n"<<tmp[i]<<" ";
        }
        cout<<endl;
    }
Главное меню
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<iostream>
using namespace std;
#include"arr.h"
int main()
{
    
    Tabel ar,ar2(5,6);//в этом месте ошибка , неправильные  первый аргумент 
    
    ar.RANDOM();
    
    cout<<ar;
    Tabel ar3(ar);
    cout<<"\n\n\n"<<ar3;
    ar.sum0();
    
    ar.ifk();
    cin.get();
    cin.get();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2013, 23:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос что не так с конструктором с параметрами (C++):

Не компилируется: что не так с конструктором структуры? - C++
Есть некий класс - односвязный линейный список, с элементами типа TElem. Шаблонность здесь только чтобы хранить различные объекты в списке...

Массив объектов с конструктором с параметрами - C++
Подскажите как сделать что-бы было типа так class A { int a1; int a2; int a3; }: int main()

Реализовать создание и заполнение одним числом двумерного массива конструктором с тремя параметрами - C++
Добрый день. Одно из заданий лабораторной работы : &quot;Реализовать создание и заполнение одним числом двумерного массива конструктором...

Пример класса с конструктором и деструктором, создание экземпляра класса через конструктор с параметрами - C++
Привести пример класса с конструктором и деструктором, созданием экземпляра класса с помощью конструктора с параметрами.

Что-то с конструктором - C++
Задача: написать программу бюджета, есть два типа счета, у каждого свои параметры пополнения и снятия. Место вывода баланса только что...

классы непойму что с конструктором - C++
привет вот создал такой класс но чето конструктор ругается но что непойму( #include &lt;iostream&gt; #include &lt;string&gt; using namespace...

4
Саня gamer
97 / 71 / 1
Регистрация: 18.05.2011
Сообщений: 343
Записей в блоге: 1
14.04.2013, 23:41 #2
C++
1
int** aMatrix!=5
так ясно?
0
pi_X_el
Заблокирован
14.04.2013, 23:45 #3
Цитата Сообщение от AlexProg Посмотреть сообщение
Tabel ar,ar2(5,6);//в этом месте ошибка
А где конструктор, который принимает два аргумента типа int?

Добавлено через 32 секунды
нету такого конструктора
0
AlexProg
1 / 1 / 0
Регистрация: 03.11.2012
Сообщений: 52
14.04.2013, 23:49  [ТС] #4
конструктор вроде как автоматически выбираеться компилятором в соответствии с сигнатурой , мне говорили что у меня конструктор с параметрами должени принимать двомерный массив , и размерность
0
Croessmah
Ушел
Эксперт CЭксперт С++
13554 / 7705 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
15.04.2013, 08:05 #5
Цитата Сообщение от AlexProg Посмотреть сообщение
конструктор вроде как автоматически выбираеться компилятором в соответствии с сигнатурой
Именно выбирает из имеющихся, а не создает.

Добавлено через 2 минуты
C++
1
2
3
4
5
6
Tabel(int** aMatrix,int aSize);//констуктор с параметрами
//...
void Tabel::SetSize(int aSize)//установить размер 
{
   AS=aSize;
}
таким макаром у Вас получается только квадратная матрица.
Вы же одну размерность только передаете.
0
15.04.2013, 08:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.04.2013, 08:05
Привет! Вот еще темы с ответами:

Как сделать так что я мог умножать не на два числа а на 3,4,5 и так далее? - C++
Вот код: #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int main(){ float a,c; char b; skip: ...

Что в коде ни так? while не работает так, как ожидаю - C++
Написанный код, как я думаю, должен выдавать цифры от 0 до 1000, столбиком. Но выдает начиная от 702 до 1000. Что ни так понимаю, где...

что происходит со старым конструктором когда я создаю новый, пренадлежащий производному типу? (первый конструктор пренадлежит базовому типу) - C++
1) что происходит со старым конструктором когда я создаю новый, пренадлежащий производному классу? (первый конструктор пренадлежит базовому...

Вызов функции с теми же параметрами, что и main - C++
Господа, вот уже голову сломал. У меня есть программа, которая принимает на вход 4 параметра и считает кое что. то есть это ...


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

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

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