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

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

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

Создайте класс StringVector, производный от vector<void*> - C++

25.12.2013, 13:14. Просмотров 396. Ответов 5
Метки нет (Все метки)

Создайте класс StringVector, производный от vector<void*>. Переопределите функции push_back() и operator[] так, чтобы они принимали и возвращали string*.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <string>
#include <vector>
using namespace std;
 
class StringVector: public vector<void*> {
public:
  StringVector(){}
  string* push_back(string*str){
      vector<void*>::push_back(str);
  }
 
  string*operator[](string*str){
  
  }
};
 
 
int main() {
    StringVector base;
 
}
как дальше?

Добавлено через 12 часов 29 минут
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.12.2013, 13:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создайте класс StringVector, производный от vector<void*> (C++):

Базовый класс Complex и производный класс Vector - C++
Создайте базовый класс Complex (комплексное число) для реализации комплексных чисел в алгебраической форме и основных операций с ними:...

Создать производный класс ТРОИЧНЫЙ ВЕКТОР от класса Vector - C++
Народ!!! Please help me! Задолбался уже!:wall: Вобщем такое задание: Создать производный класс ТРОИЧНЫЙ ВЕКТОР от класса Vector....

Создайте производный класс с дополнительными полями, конструктором по умолчанию и методами чтения/изменения значений этих полей - C++
Помогите! Завтра экзамен,времени нет! Заранее спасибо. 11. На базе заданного класса создайте производный класс с дополнительными полями,...

Разработать производный от абстрактного класса Figure класс и класс, производный от производного - C++
Разработать базовый абстрактный класс Figure с пустым виртуальным методом print для вывода в дальнейшем полной информации об объекте: ...

error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Vector<int>::Vector<int>(void)" (?0?$Vector@H@@QAE@XZ) в функции _main - C++
//Vector.h #include &lt;iostream&gt; #include &lt;Windows.h&gt; #include &lt;climits&gt; #include &lt;vector&gt; #include &lt;stdlib.h&gt; #include &lt;fstream&gt;...

Есть производный класс и базовый; при чём производный использует только ЧАСТЬ ресурсов базового, правильно ли это? - C++
Ну то есть базовый класс A, с полями, допустим, a, b, c, d. И я проектирую производный класс B и я железно знаю, что он будет использовать...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ShadowFirst
55 / 48 / 1
Регистрация: 31.10.2013
Сообщений: 161
25.12.2013, 13:22 #2
Насколько я знаю push_back не должно возвращать значения
И опишите конкретно что не получается.
helloy
0 / 0 / 0
Регистрация: 15.11.2013
Сообщений: 46
25.12.2013, 13:26  [ТС] #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
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
using namespace std;
 
class StringVector: public vector<void*> {
public:
  string* push(string*str){
      vector<void*>::push_back(str);
  }
 
  string*operator[](int index){
      return (string*)vector<void*>::operator[](index);
  }
  ~StringVector(){
      vector<void*>::clear();
  }
 
};
 
 
int main() {
    ifstream in("25.cpp");
    StringVector base;
    string line;
    while(getline(in,line)) base.push_back(new string(line));
    for(int i=0;i<base.size();i++){cout<<*base[i]<<endl;}
 
}
Добавлено через 11 секунд
пока дождёшься...

Добавлено через 1 минуту
or
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
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
 
class StringVector: public std::vector<void*> {
public:
  std::string* push(std::string*str){
      vector<void*>::push_back(str);
  }
 
  std::string*operator[](int index){
      return (std::string*)std::vector<void*>::operator[](index);
  }
  ~StringVector(){
      vector<void*>::clear();
  }
 
};
 
 
int main() {
    std::ifstream in("25.cpp");
    StringVector base;
    std::string line;
    while(std::getline(in,line))
        base.push_back(new std::string(line));
    for(int i=0;i<base.size();++i)
        std::cout<<*base[i]<<std::endl;
 
}
SatanaXIII
Супер-модератор
Эксперт С++
5609 / 2643 / 244
Регистрация: 01.11.2011
Сообщений: 6,502
Завершенные тесты: 1
25.12.2013, 13:28 #4
Цитата Сообщение от ShadowFirst Посмотреть сообщение
Насколько я знаю push_back не должно возвращать значения
Все верно:
C++
1
void push_back(const _Tp& __x)...
helloy
0 / 0 / 0
Регистрация: 15.11.2013
Сообщений: 46
25.12.2013, 13:41  [ТС] #5
Цитата Сообщение от SatanaXIII Посмотреть сообщение
push_back не должно возвращать значения
Думаю автор имел вот что:
C++
1
2
3
4
5
6
//...
std::string* push(std::string*str){
     vector<void*>::push_back(str);
      return (std::string*)vector<void*>::back();
  }
//...

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
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
 
class StringVector: public std::vector<void*> {
public:
  std::string* push(std::string*str){
     vector<void*>::push_back(str);
      return (std::string*)vector<void*>::back();
  }
 
  std::string*operator[](int index){
      return (std::string*)std::vector<void*>::operator[](index);
  }
  ~StringVector(){
      vector<void*>::clear();
  }
 
};
 
 
int main() {
    std::ifstream in("25.cpp");
    StringVector base;
    std::string line;
    while(std::getline(in,line))
        std::cout<<*base.push(new std::string(line))<<std::endl;
    
 
}
Добавлено через 9 минут
Конечный результат:
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 <iostream>
#include <string>
#include <vector>
#include <fstream>
 
class StringVector: public std::vector<void*> {
public:
  std::string* push(std::string*str){
     vector<void*>::push_back(str);
      return (std::string*)vector<void*>::back();
  }
 
  std::string*operator[](std::string*str){
      for(int i=0;i<int(std::vector<void*>::size());++i)
          if (*(std::string*)std::vector<void*>::operator[](i)==*str){
            return (std::string*)std::vector<void*>::operator[](i);
          }
        return 0;
  }
  ~StringVector(){
      vector<void*>::clear();
  }
 
};
 
 
int main() {
//hello
    std::ifstream in("MY.cpp");
    StringVector base;
    std::string line;
    while(std::getline(in,line))
        std::cout<<*base.push(new std::string(line))<<std::endl;
    std::cout<<base[new std::string("//hello")];
    
 
}
ShadowFirst
55 / 48 / 1
Регистрация: 31.10.2013
Сообщений: 161
25.12.2013, 19:58 #6
Так как ваш класс унаследован от vector<void*> то можно использовать запись в push_back:
C++
1
this->push_back и значение.
И все равно возвращать значение после того как его туда пометили бессмысленно
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2013, 19:58
Привет! Вот еще темы с ответами:

Создать класс Point и производный класс ColoredPoint (цветная точка) - C++
Создайте класс Point (точка на плоскости), характеризующийся двумя координатами. Создайте производный класс ColoredPoint (цветная точка), в...

Выведение vector-а из функции void*(c++) - C++
Здравствуйте, помогите пожалуйста. Я создаю структуру : struct MemoryBlock { size_t offset; size_t size;...

Разработать класс Tableware (посуда) и производный класс Dish (тарелка). Описать атрибуты - C++
Разработать класс Tableware (посуда) и производный класс Dish (тарелка). Описать атрибуты.

Разработать класс Man (человек) и производный класс Student (студент). Описать атрибуты. - C++
Разработать класс Man (человек) и производный класс Student (студент). Описать атрибуты.


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

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

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