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

Наследование, переопределение функций (из книги "Философия C++") - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ С++.Оператор switch. http://www.cyberforum.ru/cpp-beginners/thread163692.html
Не могу избавиться от ошибки в программном коде. #include <iostream> #include <math.h> #include <conio.h> using namespace std; int main() { short х; int a,b,k,c1,c2; cout<<"a="; cin>>a;
C++ Не могу понять, что такое void? Господа, подскажите пожалуйста глупому, что значит void? Например: void function1(void); Что делает первый и второй void? Заранее благодарен. http://www.cyberforum.ru/cpp-beginners/thread163625.html
C++ Найти сумму, среднее значение, меньшее и большее из трех введенных чисел
Не могу понять как решть задачу: Программа которая вводит с клавиатуры три целых числа и печатает сумму, среднее значение, меньшее и большее из этих чисел.
Чем отличаются функции strcpy и strcpy_s C++
Подскажите в чем отличаются функции: strcpy от strcpy_s, sprintf от sprintf_s, strcat от strcat_s, и т.д. И какой вариант лучше использовать?
C++ Читаем длинное число из файл. http://www.cyberforum.ru/cpp-beginners/thread163590.html
Доброго времени суток) У меня такой вопрос. Как можно прочитать длинное число (превышающее стандартные типы данных) из файла в массив... Ну например число, которое не превышает 10^100... Пользуюсь потоками ifstream и ofstream для работы с файлами. Заранее благодарен за ответ!)
C++ научите создавать массивы вот как мне написать два массива (одномерный\многомерный) и что бы их выводил на экран, я новичок.#include <iostream> #include <windows.h> void main(){ int a,b,i; std::cin>>a ; std::cin>>b ; подробнее

Показать сообщение отдельно
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
05.09.2010, 16:17     Наследование, переопределение функций (из книги "Философия C++")
Читаю книгу Эккеля "Философия C++", есть там такое задание:
Создайте класс StringVector, производный от vector<void*>. Переопределите функции push_back() и operator[] так, чтобы они принимали и возвращали string*. Что произойдет при попытке вызова push_back() для void*?
Сначала решил переопределить push_back(), сделал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include<vector>
using namespace std;
class StringVector:vector<void*>{
public:
    void push_back(string* S){
        vector::push_back(S);
    }
};
 
 int main(){
StringVector ob;
string s="HELLO!!!";
ob.push_back(&s);
return 0;
}
g++ выводит:
a.cpp: In member function ‘void StringVector:ush_back(std::string*)’:
a.cpp:7: error: ‘template<class _Tp, class _Alloc> class std::vector’ used without template parameters
Потом сделал так:
C++
1
2
3
4
5
void push_back(string* S){
    static int i=0;
    (*this)[i]=S;
    ++i;
    }
так компилируется, но при выполнении пишет "Ошибка сегментирования"
Подскажите, как это правильно реализовать?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru