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

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

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

STL и собственный класс - C++

26.09.2013, 13:00. Просмотров 407. Ответов 5
Метки нет (Все метки)

Подскажите, пожалуйста, как можно переопределить функцию STL для собственного класса. Например, push_front() или push_back() не работают для пользовательского типа. Насколько я понимаю, нужно переопределить функцию STL непосредственно в своем классе, только как это сделать?

main.cpp
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
#include "stdafx.h"
#include <list>
#include <iostream>
#include "MyClass.h"
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    list<MyClass> coll;
    coll.push_back(0, 'c'); // ошибка, отсутствует экземпляр перегруженной функции
    coll.pop_back(); // нет ошибки, функцию перегружать не нужно
 
    return 0;
}
 
MyClass.h
 
class MyClass
{
public:
    MyClass()
    {
        a = 0;
        c = ' ';
    }
    int a;
    char c;
};
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.09.2013, 13:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос STL и собственный класс (C++):

Собственный класс итератора - C++
Добрый день! Пишу сейчас одну библиотеку (не использующею STL и другие библиотеки) и для контейнеров решил написать класс итератора: ...

Собственный класс-итератор - C++
Создаю класс-итератор для класса Студенты. Сам класс студенты: #ifndef STUDENTS_H #define STUDENTS_H #include &lt;string&gt; ...

Реализуйте собственный класс строки - C++
Задание: Строка Реализуйте собственный класс строки для использования в языке C++. Класс должен поддерживать наиболее часто...

Map и собственный класс: GCC ругается - C++
Что я делаю не так? Мэйн: int main() { string s = &quot;abc&quot;; map&lt;string, ConfigSection&gt; sectionList; sectionList =...

Вывод двумерного массива используя собственный класс - C++
Доброго времени суток! дайте совет что не так сделал. нужно вывести двумерный массив с помощью класса: #include &quot;stdafx.h&quot; ...

Exception Handling. Собственный класс для перехвата исключений - C++
Помогите, пожалуйста, с данной задачей. Задача: Define an exception class called tornadoException. The class should have two...

5
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
26.09.2013, 13:03 #2
Цитата Сообщение от ins1der Посмотреть сообщение
coll.push_back(0, 'c');
push_back() в STL вроде бы принимает один аргумент - значение, которое нужно добавить в конец списка
0
Cynacyn
33 / 33 / 0
Регистрация: 02.05.2013
Сообщений: 109
26.09.2013, 13:04 #3
а что Вы собственно имели ввиду под
C++
1
coll.push_back(0, 'c');
?
возможно вы хотели:

C++
1
coll.push_back(MyClass(0, 'c')); // ошибка -  в вашем классе нет подходящего конструктора
или
C++
1
coll.push_back(MyClass()); // работает
напишите что Вы хотите сделать
1
castaway
Эксперт С++
4916 / 3024 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
26.09.2013, 13:28 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <list>
 
template <class T> class my_list : public std::list <T> {
public:
    void push_back( const T & value ) {
        std::cout << "you pushed " << value << std::endl;
        ((std::list<T> *)this)->push_back( value );
    }
};
 
int main()
{
    my_list <int> l;
    l.push_back( 1 );
    l.push_back( 20 );
    l.push_back( 300 );
}
1
ins1der
0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 7
26.09.2013, 14:51  [ТС] #5
C++
1
coll.push_back(MyClass()); // работает
Действительно, это я велосипед начал изобретать, достаточно в качестве аргумента передать функции конструктор класса. Спасибо.
0
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 832
26.09.2013, 15:30 #6
C++
1
2
3
4
5
6
7
8
9
10
struct Foo
{
    Foo(int a, int b)
        : x(a), y(b) {}
    int x, y;
};
 
    std::vector<Foo> v;
    v.emplace_back(1, 2);
    std::cout << v[0].x << " " << v[0].y;
0
26.09.2013, 15:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.09.2013, 15:30
Привет! Вот еще темы с ответами:

Библиотека STL, класс вектор - C++
Помогите написать прогу... вот задание: Использовать класс vector библиотеки STL для хранения каталога книг. Книги характеризуются...

Библиотека STL, класс ЛИСТ - C++
Прив Всем! Нужна помощь... вот задание: ========================================================================== Используй класс...

Считывание из файла в класс с stl - C++
Дан файл, в котором содержится данные по учащимся, Имя Фамилия и оценки. Надо вывести в алфавитном порядке, средний бал по каждому. У...

Класс-список с доступом к любому элементу (STL) - C++
Нужно написать контейнерный класс список для хранения объектов класса комплексных чисел(имеется). Причем нельзя делать очередь, стек, дек и...


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

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

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