Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: 6468
Последний выпуск: 19.06.2015

Шаблон класса

88K
11 февраля 2014 года
vladgad
3 / / 11.02.2014
Изначально было задание реализовать класс, который бы определял тип переменной вводимой строки (int или char) , это я сделал. Теперь нужно преобразовать этот класс в шаблон класса.Помогите пожалуйста.

Код:
#include <iostream>
#include <ctype.h>
#include <string>
using namespace std;
class Checker
{
    string s; // обьявление строки
    char ch;  // переменная считываемого символа
    int pos;  // переменная для ввода заданной позиции в строке
public:
    Checker() {}
    void enterString() //функция ввода строки
    {
        cout << "Enter string: ";
        getline(cin, s);
    }
    void enterPosition() // ввод нужной позиции в строке
    {
        cout << "Enter position: ";
        cin >> pos;
    }
    void check() //  функция определения типа позиции
    {
        ch = s.at(pos); // обращение к определенному елементу строки
        bool check = isdigit(ch);

        if (check == 0)
            cout << ch << "  type char" << endl;
        else
            cout << ch << "  type int " << endl;
    }
};
int main()
{
    Checker ch;
    ch.enterString();
    ch.enterPosition();
    ch.check();
    system("pause");
    return 0;
}
322
12 февраля 2014 года
sadovoya
757 / / 19.11.2005
Такая параметризация --- полный бред. Решение можно такое:

Код:
....
 template<typename T>
 class Checker
 {
     string s; // обьявление строки
     char ch;  // переменная считываемого символа
     T pos;    // переменная для ввода заданной позиции в строке
 public:
....

void check() //  функция определения типа позиции
     {
         ch = s.at((size_t)pos); // обращение к определенному елементу строки
         bool check = isdigit(ch);

         if (check == 0)
             cout << ch << "  type char" << endl;
         else
             cout << ch << "  type int " << endl;
     }
....

 int main()
 {
     Checker<long> ch;
     ch.enterString();
     ch.enterPosition();
     ch.check();
....
88K
11 февраля 2014 года
vladgad
3 / / 11.02.2014
и параметр шаблона - тип позиции
88K
12 февраля 2014 года
vladgad
3 / / 11.02.2014
спасибо,так лучше даже
44K
22 февраля 2014 года
vvmCpp
32 / / 21.01.2014
T pos; // переменная для ввода заданной позиции в строке - тут компилятор почему-то ругался

int pos; // так вроде работает

Код:
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;

 template<typename T>
 class Checker
 {
     string s; //
     char ch;  //  
     int pos;    //  
 public:
    Checker() {}
    void enterString() //
        {
            cout << "Enter string: ";
            getline(cin, s);
        }
    void enterPosition() //  
        {
            cout << "Enter position: ";
            cin >> pos;
        }
   
   
    void check() //  
        {
            ch = s.at(pos); //
           
            bool check = isdigit(ch);
   
            if (check == 0)
                cout << ch << "  type char" << endl;
            else
                cout << ch << "  type int " << endl;
        }
       
};
   
       
int main(int argc, char *argv[])
{
    Checker<int> ch;
   
    ch.enterString();
    ch.enterPosition();
   
     ch.check();
   
    cout << "Press the enter key to continue ...";
        system("PAUSE");
   
    return EXIT_SUCCESS;
}

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог