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

непонятная конструкция, шаблоны - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Структура отрезок. http://www.cyberforum.ru/cpp-beginners/thread337576.html
Как сделать правильней и красивее на ваш взгляд - struct tPoint { int x, y; }; struct tSegment { tPoint pt1, pt2; };
C++ Аргументы функции Вопрос на счет аргументов функции в С++. есть такая функция: void Teleport(Player* pPlayer, float array) { int i = 0; pPlayer->TeleportTo(massive, massive, massive, massive, massive); } (pPlayer является экземпляром заранее реализованного объекта, он обозначает игрока, TeleportTo реализована заранее, принимает пять аргументов (uint32 mapID, float X, float Y, float Z, float... http://www.cyberforum.ru/cpp-beginners/thread337569.html
C++ Ошибка ввода
После введения названия книги программа аварийно завершается. В чем проблема ? #include<iostream> #include<windows.h> #include<stdlib.h> using namespace std; class publications {protected: char b; float c;
Непонятка с заголовочными файлами C++
game.h #ifndef _GAME_H_ #define _GAME_H_ #include <gl\gl.h> #include <gl\glu.h> #pragma comment (lib, "opengl32.lib") #pragma comment (lib, "glu32.lib")
C++ Программа, которая переводит числа в слова http://www.cyberforum.ru/cpp-beginners/thread337519.html
Здрасти всем. Есть код: #include <conio.h> #include <stdio.h> #include <iostream> #include <stdlib.h> string NumericToString(int n)
C++ Указатели в C++. Я никак не могу понять чем отличаются следующие объявления: int const * pTemp; const int * pTemp; И вот еще что не понятно: const char = "Some string" char const = "Some other string"; Еще в одном исходнике видел: int const iTemp; подробнее

Показать сообщение отдельно
Kastaneda
Форумчанин
Эксперт С++
4479 / 2841 / 227
Регистрация: 12.12.2009
Сообщений: 7,224
Записей в блоге: 1
Завершенные тесты: 1
30.07.2011, 22:08     непонятная конструкция, шаблоны
Цитата Сообщение от LosAngeles Посмотреть сообщение
а что тогда можно присвоить р?
Сижу, методом тыка пытаюсь определить - это вообще что?
Арифметические операции к этому p не применяются (ошибка компиляции), оператор разыменования указателя тоже. Присвоить какое-то значение ему невозможно, если вывести это p, то выводится просто 1. Пробую вызывать ф-цию по-разному, не указатель на int, не указатель на функцию типа int(*)() в качестве аргумента неприемлемы (ошибка компиляции). Но сама строка:
C++
1
int C::*p;
компилируется нормально. Вообще странно.
P.S. у меня C - это просто класс.

Добавлено через 2 минуты
Да, оператор () тоже неподходит...

Добавлено через 45 минут
LosAngeles, вот нашел в википедии:
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
  class MyClass
  {
  public:
    int a;
  };
 
  template< class T >
  T& IncrementIntegerElement( int T::* Element, T& Object )
  {
    Object.*Element += 1;
    return Object;
  }
 
  template< class T >
  T IncrementMyClassElement( T MyClass::* Element, MyClass& Object )
  {
    Object.*Element += 1;
    return Object.*Element;
  }
 
  MyClass Obj;
  int n;
 
  n = ( IncrementIntegerElement( &MyClass::a, Obj ) ).a;
  n = IncrementMyClassElement( &MyClass::a, Obj );
Как и предполагалось, это просто указатель на член класса типа int, просто похоже подобная конструкция используется только с шаблонами (с простым классом некомпилируется).
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru