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

Проблема с typedef.... не виден новый тип данных! - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сравнить логически два массива http://www.cyberforum.ru/cpp-beginners/thread394694.html
Сравнить , используя логическое или(||) два одномерных массива (А и В) и записать результат в массив С Массивы создал , но не знаю как сравнить и записать результат в С . В A и B должны быть любые числа (int) а С должен состоять из множества 0 и 1 Как такое организовать, подскажите ребят !!!
C++ Помогите запрограммировать задачи на Одномерные массивы Доброго времени суток, форумчане! ;) помогите с работой, пожалуйста ) Буду благодарен 1. Дан массив действительных чисел. Среди них есть равные. Найти первый максимальный элемент массива и заменить его нулем. 2. В одномерном массиве с четным количеством элементов (2N) находятся координаты N точек плоскости. Они располагаются в следующем порядке: x1; y1, x2; y2 , x3; y3 и т.д. Определить... http://www.cyberforum.ru/cpp-beginners/thread394685.html
C++ Вывести все слова, в которых есть буква "a"
не могу найти ошибку int i=0,j=0,a=0,schet=0; char s,s1; cin.getline(s,50); while(i<50) { if((isspace(s)) && (isalnum(s))) { j=i-1;schet=0; while((!isspace(s)) || (s=='\n'))
Как работает метод Пузырька? C++
Добрый день, господа... Делаю задание по сортировке массива... Нашел вот эту статью - http://debugni.ru/index.php?option=com_content&view=article&id=5:2011-02-16-05-57-40&catid=2:2011-01-30-18-28-02&Itemid=14 , но не могу понять, как работает этот метод... Можите как-то подробнее рассказать о его работе (желательно по этому коде)...
C++ Программа на С++ "Записная книжка" http://www.cyberforum.ru/cpp-beginners/thread394643.html
Ребят помогите)) Нажна программа на С++ "Записная книжка"... может у кого есть уже готовая!!!...в общем помогите) "Программа «Записная книжка». Предназначена для ввода текста с последующим его сохранением, печатью и открытием. Входная информация – текст в окне программы, настройки (гарнитура, размер шрифта, цвет, параметры печати и т.д.). Выходная информация – текстовый документ в электронном...
C++ Вводится последовательность целых чисел, 0-конец последовательности. Содержит ли последовательность хотя бы два числа, кратных 3,5,7? Вводится последовательность целых чисел, 0-конец последовательности. Содержит ли последовательность хотя бы два числа, кратных 3,5,7? Именуйте темы осмысленно! подробнее

Показать сообщение отдельно
Bers
Заблокирован
29.11.2011, 19:56     Проблема с typedef.... не виден новый тип данных!
Цитата Сообщение от fasked Посмотреть сообщение
Ну и какое решение?
Самый просто способ: сделать обёртку над контейнером, и продублировать весь интерфейс контейнера.

Обертка будит запоминать какой тип контейнера заказал пользователь, и работать с контейнером такого типа. Хотя, конечно способ топорный и унылый.

Но и задание само по себе пахнет фейлофой архитектурой:

Сделал набросок на примере вектора. Но передалть под самодельное множество не долго.

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 <vector>
 
int MenuType();
 
struct IContainer //интерфейс управления контейнером
{
    ~IContainer() { delete mPtr; mPtr=NULL; }
    
    template<typename T, typename K>  void setPtr(T* target, K* typeInf) 
    {
        mTypeName= typeid( K ).name();   
        mPtr= (void*) target;
    }
 
    template<typename T>
    void push_back(const T& val)
    {
        if(mTypeName=="char")
        {
            std::vector<char>* Inter= (std::vector<char>*)mPtr;
            Inter->push_back(val);
        }
    }
    std::string mTypeName; //имя типа данных контейнера
    void* mPtr; //указатель на сам контейнер
};
 
 
int main()
{
    STD;
 
    IContainer ICont;
 
    switch ( MenuType()  )  
    {
        case 1: { vector<string>* Ptr= new vector<string>;   string* temp=NULL; ICont.setPtr(Ptr, temp); break; }
        case 2: { vector<char>*   Ptr= new vector<char>;       char* temp=NULL; ICont.setPtr(Ptr, temp); break; }
        case 3: { vector<int>*    Ptr= new vector<int>;         int* temp=NULL; ICont.setPtr(Ptr, temp); break; }
        case 4: { vector<double>* Ptr= new vector<double>;   double* temp=NULL; ICont.setPtr(Ptr, temp); break; }
    }
    ICont.push_back(45); //самый простой способ - сделать обёртку, дублирующую интерфейс
 
   // (*ICont).push_back(45);  //как сделать вот так, я пока ещё не догадался.
                             //кино досмотрю и подумаю
 
    EndProgramm();
}
 
int MenuType()
{
    STD;
 
    cout << "Введите тип данных, с которыми вы хотите работать:\n";
 
    cout << "1 -  string\n";
    cout << "2 -  char\n";
    cout << "3 -  int\n";
    cout << "4 -  double\n";
 
    int select;   cin >> select;
    return select;
}
 
Текущее время: 11:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru