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

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

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

Как передать значение в шаблонный класс - C++

23.01.2014, 17:47. Просмотров 318. Ответов 5
Метки нет (Все метки)

Здравствуйте. Помогите пожалуйста. Я хочу передать два заполненных вектора в класс, но у меня возникает ошибка. Не понимаю, что я делаю не так.
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
#include "stdafx.h"
#include <iostream>     
#include <algorithm>    
#include <vector>       
using namespace std;
template <class T> class Mnojestvo
{   
    public:
        int n;
        T mnoj1;    
        T mnoj2;
        Mnojestvo(mnoj1;mnoj2);
    
        
};
template <class T>  Mnojestvo <T>::Mnojestvo(mnoj1,mnoj2)
{
        this->mnoj1 = mnoj1;
        this->mnoj2 = mnoj2;
}
int _tmain(int argc, _TCHAR* argv[])
{
    vector<int>mn1; 
    int n=5;
    int k;
    for(int i=0; i<n; i++)
    {
        cin >> k;
        mn1.push_back(k);
    }
    vector<int>mn2; 
    for(int i=0; i<n; i++)
    {
        cin >> k;
        mn2.push_back(k);
    }
    Mnojestvo<int>mnog(mn1,mn2);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2014, 17:47     Как передать значение в шаблонный класс
Посмотрите здесь:

Передать шаблонный класс, как параметр шаблона - C++
нужно не используя stl написать аналог класса list. написал болванку и застрял template&lt;class C&gt; class node{ protected: C *_next; ...

Как корректно удалить шаблонный класс CList? - C++
Создаю указатель на класс CList в заголовочном файле. С помощью этого указателя динамически создаю нужное количество (N) объектов класса...

Как правильно подключить шаблонный класс (VS2008)? - C++
Добрый день! Помогите в подключении шаблонного класса в Visual Studio 2008 Professional. Создал консольный проект,в заголовочном...

Как расположить шаблонный класс в разных файлах? - C++
Есть некоторый класс A, он размещен в разных файлах так: main.cpp : #include &lt;iostream&gt; #include &quot;a.h&quot; int main() { A a; } ...

Как вынести метод возвращающий шаблонный класс в из hpp в cpp? - C++
Есть код в заголовоном файле: template&lt;class T,typename Ptr&gt; class LINQ { private: Ptr begin; Ptr end; std::vector&lt;T*&gt;...

Как создать шаблонный класс-массив для хранения объектов? - C++
Есть абстрактный класс Figure. Есть два производных от него класа: Field i TicTаc. И есть шаблонный класс Arr. У Field'и есть поле...

Функция, дружественная классу, вложенному в шаблонный класс, или как написать итератор. - C++
Здравствуйте! Пишу аналог STL vector. Возникают следующие ошибки: source.cpp:11: error: expected initializer before ‘operator’ ...

Передать итератор на шаблонный вектор в функцию - C++
Здравствуйте. Есть два вектора std::vector&lt;Player&gt; players; // Player - структура с двумя полями std::vector&lt;size_t&gt; indices; ...

vector (шаблонный класс) - C++
Нужно создать простенький шаблонный класс вектор Подскажите пожалуйста , как написать запись элемента в начало вектора и в конец...

Дружественный шаблонный класс - C++
Доброго времени суток. Есть пример из книги (создание списка). Вот код: #ifndef LISTND_H #define LISTND_H template &lt;class...

Шаблонный класс array (C++ 11) - C++
#include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;cstring&gt; #include &lt;array&gt; using namespace std; int main(){ array &lt;long...

Шаблонный класс Множества - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; //============================= ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.01.2014, 18:02     Как передать значение в шаблонный класс #2
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
//#include "stdafx.h"
#include <iostream>     
#include <algorithm>    
#include <vector>       
using namespace std;
template <class T> class Mnojestvo
{   
    public:
        int n;
        T mnoj1;    
        T mnoj2;
        Mnojestvo(T mnoj1, T mnoj2);
};
 
template <class T>  Mnojestvo <T>::Mnojestvo(T mnoj1, T mnoj2)
{
        this->mnoj1 = mnoj1;
        this->mnoj2 = mnoj2;
}
 
int main()
{
    vector<int>mn1; 
    int n=5;
    int k;
    for(int i=0; i<n; i++)
    {
        cin >> k;
        mn1.push_back(k);
    }
    vector<int>mn2; 
    for(int i=0; i<n; i++)
    {
        cin >> k;
        mn2.push_back(k);
    }
    
    Mnojestvo <vector<int> > mnog(mn1, mn2);
 
    return 0;
}
Karfa
0 / 0 / 0
Регистрация: 09.09.2013
Сообщений: 27
23.01.2014, 21:12  [ТС]     Как передать значение в шаблонный класс #3
Спасибо большое)).

Добавлено через 3 часа 7 минут
Делаю метод класса Peresechenie() ,но возникли проблемы с итераторами. Как правильно написать? В res должен храниться вектор с результатом выполнения функции.
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
#include "stdafx.h"
#include <iostream>     
#include <algorithm>    
#include <vector>       
using namespace std;
template <class T> class Mnojestvo
{   
    public:
        T mnoj1;    
        T mnoj2;
        Mnojestvo(T mnoj1, T mnoj2);
        T Peresechenie();
};
 
template <class T>  Mnojestvo <T>::Mnojestvo(T mnoj1)
{
    vector<T>mnoj1; 
    int n=5;
    int k;
    for(int i=0; i<n; i++)
    {
        cin >> k;
        mnoj1.push_back(k);
    }
    this->mnoj1 = mnoj1;
    this->mnoj2 = mnoj2;
}
template <class T>  Mnojestvo <T>::Peresechenie()
{
    
    vector <T> res;
    vector <T> mnoj1::iterator it1=tr;
    vector <T> mnoj2::iterator it2=tr2;
    //typename vector<T>::iterator it1=data.begin(), it2;
 
    for(it1=tr.begin(); it1!=tr.end(); it1++)
    {
        for(it2=tr2.begin(); it2!=tr2.end(); it2++)
        {
            if (*it1==*it2)
            {
                res.push_back(*it1);
            }
        }
    }
    return res;
}
int main()
{
    vector<int>mn1; 
    int n=5;
    int k;
    for(int i=0; i<n; i++)
    {
        cin >> k;
        mn1.push_back(k);
    }
    vector<int>mn2; 
    for(int i=0; i<n; i++)
    {
        cin >> k;
        mn2.push_back(k);
    }
    
    Mnojestvo <vector<int> > mnog(mn1, mn2);
 
    return 0;
}
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.01.2014, 22:04     Как передать значение в шаблонный класс #4
Это откуда взялось?
C++
1
2
template <class T>  Mnojestvo <T>::Mnojestvo(T mnoj1)
{...
Добавлено через 2 минуты
Как с этим совмещаетя?
C++
1
Mnojestvo(T mnoj1, T mnoj2);
С этим?
C++
1
Mnojestvo <vector<int> > mnog(mn1, mn2);
Или не обращаем внимания? Лишь бы код выложить? Пускай другие разбираются?
Karfa
0 / 0 / 0
Регистрация: 09.09.2013
Сообщений: 27
23.01.2014, 22:19  [ТС]     Как передать значение в шаблонный класс #5
Дак там же закоменчено, не обращать на это внимание.

Добавлено через 2 минуты
Упс сори, извиняюсь.) Исправил свой косяк
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
#include "stdafx.h"
#include <iostream>     
#include <algorithm>    
#include <vector>       
using namespace std;
template <class T> class Mnojestvo
{   
    public:
        T mnoj1;    
        T mnoj2;
        Mnojestvo(T mnoj1, T mnoj2);
        T Peresechenie();
};
 
template <class T>  Mnojestvo <T>::Mnojestvo(T mnoj1, T mnoj2)
{
        this->mnoj1 = mnoj1;
        this->mnoj2 = mnoj2;
}
template <class T>  Mnojestvo <T>::Peresechenie()
{
    
    vector <T> res;
    vector <T> mnoj1::iterator it1=tr;
    vector <T> mnoj2::iterator it2=tr2;
    
 
    for(it1=tr.begin(); it1!=tr.end(); it1++)
    {
        for(it2=tr2.begin(); it2!=tr2.end(); it2++)
        {
            if (*it1==*it2)
            {
                res.push_back(*it1);
            }
        }
    }
    return res;
}
int main()
{
    vector<int>mn1; 
    int n=5;
    int k;
    for(int i=0; i<n; i++)
    {
        cin >> k;
        mn1.push_back(k);
    }
    vector<int>mn2; 
    for(int i=0; i<n; i++)
    {
        cin >> k;
        mn2.push_back(k);
    }
    
    Mnojestvo <vector<int> > mnog(mn1, mn2);
 
    return 0;
}
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.01.2014, 22:52     Как передать значение в шаблонный класс #6
У вас параметры шаблона не продуманы. Если T не вектор, тогда какие итераторы? Если собираетесь работать с векторами, то поля класса и нужно делать векторами: vector <T>.

Добавлено через 12 минут
Как-то так:
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
//#include "stdafx.h"
#include <iostream>     
#include <algorithm>    
#include <vector>       
using namespace std;
template <class T> class Mnojestvo
{   
    public:
        vector <T> mnoj1;    
        vector <T> mnoj2;
        Mnojestvo(vector <T> mnoj1, vector <T> mnoj2);
        vector <T> Peresechenie();
};
 
template <class T>  Mnojestvo <T>::Mnojestvo(vector <T> mnoj1, vector <T> mnoj2)
{
        this->mnoj1 = mnoj1;
        this->mnoj2 = mnoj2;
}
 
template <class T>   vector <T> Mnojestvo <T>::Peresechenie()
{
    
    vector <T> res;
    vector <T>::iterator it1;
    vector <T>::iterator it2;
    
    for(it1 = mnoj1.begin(); it1 != mnoj1.end(); it1++)
    {
        for(it2 = mnoj2.begin(); it2 != mnoj2.end(); it2++)
        {
            if (*it1 == *it2)
            {
                res.push_back(*it1);
            }
        }
    }
    return res;
}
 
int main()
{
    vector <int> mn1; 
    int n = 5;
    int k;
    for(int i=0; i<n; i++)
    {
        cin >> k;
        mn1.push_back(k);
    }
    vector <int> mn2; 
    for(int i = 0; i < n; i++)
    {
        cin >> k;
        mn2.push_back(k);
    }
    
    Mnojestvo <int> mnog(mn1, mn2);
 
    vector <int> mn3 = mnog.Peresechenie();
 
    return 0;
}
Yandex
Объявления
23.01.2014, 22:52     Как передать значение в шаблонный класс
Ответ Создать тему
Опции темы

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