Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> error C2276: &: недопустимая операция с выражением 
V
    Опции темы
Mormishka
Дата 23.4.2011, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 236
Регистрация: 25.8.2010

Репутация: нет
Всего: нет



Почему нельзя передать указатель на функцию член?

Код

//Sample.h

#pragma once
class Sample
{
public:
    Sample(void);
    int fun1(int(*fun_x)(int),int x0);
    int fun2(int x);
    int fun3(int x);
    ~Sample(void);
};


Код

//Sample.cpp

#include "Sample.h"

Sample::Sample(void)
{
}

int Sample::fun1(int(*fun_x)(int),int x0)
{
    return fun_x(x0);
}

int Sample::fun2(int x)
{
    return x;
}

int Sample::fun3(int x)
{
    return fun1(&fun2,x);
}

Sample::~Sample(void)
{
}


Код

Ошибка    1    error C2276: &: недопустимая операция с выражением привязанной функции-члена
        2    IntelliSense: аргумент типа "int (Sample::*)(int x)" несовместим с параметром типа "int (*)(int)"


Это сообщение отредактировал(а) Mormishka - 23.4.2011, 17:52
PM MAIL   Вверх
boostcoder
Дата 23.4.2011, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



Код

struct Sample {
    int fun1(int(Sample::*fun_x)(int),int x0) {
       (this->*fun_x)(x0);
    }
    int fun2(int x) {}
};

int main() {
   Sample s;
   s.fun1(&Sample::fun2, 33);
}


Это сообщение отредактировал(а) boostcoder - 23.4.2011, 16:18
PM WWW   Вверх
alexvs11
Дата 23.4.2011, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


hell is here
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 21.8.2010

Репутация: 2
Всего: 10



http://forum.vingrad.ru/topic-325577.html
указатель на функцию член не есть указатель на функцию
PM MAIL   Вверх
boostcoder
Дата 23.4.2011, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



Цитата(alexvs11 @  23.4.2011,  16:17 Найти цитируемый пост)
http://forum.vingrad.ru/topic-325577.html
указатель на функцию член не есть указатель на функцию 


Mormishka, так ты уже поднимал этот вопрос...
PM WWW   Вверх
alexvs11
Дата 23.4.2011, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


hell is here
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 21.8.2010

Репутация: 2
Всего: 10



boostcoder, и правда smile 

Это сообщение отредактировал(а) alexvs11 - 23.4.2011, 16:28
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0971 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.