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

Шаблоны - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Задача на вычисление суммы без использования массивов http://www.cyberforum.ru/cpp-beginners/thread667638.html
Надо вычислить сумму, для заданного числа n: Не знаю как делать. Можно ли сделать эту задачу без массива? Надо ли использовать рекурсию? Помогите, пожалуйста!
C++ Одновременные графики в tchart и на канве Здравствуйте. Задачка: если нарисованный график (Visual Studio 2010) в Series компонента tchart в мм и отрисованный на канве компонента c помощью мыши. Вопрос: как перевести пиксельные координаты графика на канве компонента в мм для того чтобы сопоставить графики? Спасибо. http://www.cyberforum.ru/cpp-beginners/thread667631.html
C++ Какую лучше выбрать среду для графики
Какая среда больше подходит для программирования графики с OpenGL, без конструктора визуальных компонентов, и бесплатная
Оформить в отдельную функцию C++
Есть такая задача: Даны целые числа а, b, с. Вычислить в-сумму у = min (a, b + c) + max (ac, b)-min (a2, c). И программа к ней: #include <iostream> using namespace std; int main() { int a,b,c,y; cout<<"a: ";
C++ Создание окна http://www.cyberforum.ru/cpp-beginners/thread667591.html
CRect rect; GetWindowRect(&rect); rect.SetRect(5,15,700,700); window = new CPicture; window->some = this; window->CreateEx(NULL, "", "Picture in OpenGL", WS_VISIBLE|WS_OVERLAPPEDWINDOW, rect, this, 0); } Только так у меня получается создать окно. Но я видел, что вместо rect можно передать уже готовые координаты
C++ Передать string в функцию Стоит задача - предать string abc в функцию int func_1(...) Как передавать? У меня int func_1(string) - не передаёт п.с. вот код: /*Программа, которая в массиве (заполненным рандомно на интервале от 0 до 155) с заданным кол-вом элементов, находит числа у которых при делении на 7 в остатке остаётся 1, 2 или 5 */ #include <iostream> подробнее

Показать сообщение отдельно
John Prick
773 / 706 / 129
Регистрация: 27.07.2012
Сообщений: 2,022
Завершенные тесты: 3
11.10.2012, 23:35     Шаблоны
Пишешь что-то в духе:
C++
1
2
3
4
5
6
7
8
9
10
template <class T, class U>
struct IsSameType
{
    enum { Result = false };
};
template <class T>
struct IsSameType<T, T>
{
    enum { Result = true };
};
Далее:
C++
1
2
template <bool> struct CompileTimeAssert;
template <> struct CompileTimeAssert<true> {};
И наконец в своём классе:
C++
1
2
3
4
5
template <class T>
class SomeClass
{
    class Check: CompileTimeAssert< IsSameType<T, int>::Result || IsSameType<T, double>::Result > {};
};
Тогда, если тип, передаваемый в шаблон, не int и не double, то компилятор будет очень недоволен и выкинет ошибку типа CompileTimeAssert<false> не определён.

Добавлено через 14 минут
Если компилятор не поддерживает частичную специализацию шаблонов, то шаблон IsSameType нужно изменить так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
template <class TVerified, class TModel>
class IsSameType
{
private:
    template <class T>
    struct TChecker
    {
        enum { Result = false };
    };
    template <>
    struct TChecker<TModel>
    {
        enum { Result = true };
    };
public:
    enum { Result = TChecker<TVerified>::Result };
};
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru