Форум программистов, компьютерный форум 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,... http://www.cyberforum.ru/cpp-beginners/thread337569.html
C++ Ошибка ввода
После введения названия книги программа аварийно завершается. В чем проблема ? #include<iostream> #include<windows.h> #include<stdlib.h> using namespace std; class publications {protected:...
Непонятка с заголовочными файлами 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"; ... подробнее

Показать сообщение отдельно
Kastaneda
Форумчанин
Эксперт С++
4653 / 2862 / 228
Регистрация: 12.12.2009
Сообщений: 7,271
Записей в блоге: 2
Завершенные тесты: 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, просто похоже подобная конструкция используется только с шаблонами (с простым классом некомпилируется).
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru