Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2010, 18:56   #1
DartDayring
Пользователь
 
Регистрация: 10.02.2010
Сообщений: 55
По умолчанию В чем ошибка?

К примеру вот такой код.
Код:
#include "stdafx.h"
#include <stdio.h> 
 
class test 
{ 
public:
                struct s
        {
                int a;
        };
                s *obj;
                test()
                {
                        obj=new s[10];
                }
 
        void func1(struct s *obj); 
        void func2(struct s *obj); 
}; 
 
 
void test::func1(struct s *obj) { puts("1"); } 
void test::func2(struct s *obj) { puts("2"); } 
 
int main() 
{
 
void (test::*func[2])(struct s *obj); 
 
func[0] = &test::func1; 
func[1] = &test::func2; 
 
}

Что я делаю не правильно?


1>c:\users\admin\documents\visual studio 2010\projects\1\1\1.cpp(32): error C2440: =: невозможно преобразовать "void (__thiscall test::* )(test::s *)" в "void (__thiscall test::* )(main::s,main::s *)"
1> Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
1>c:\users\admin\documents\visual studio 2010\projects\1\1\1.cpp(33): error C2440: =: невозможно преобразовать "void (__thiscall test::* )(test::s *)" в "void (__thiscall test::* )(main::s,main::s *)"
1> Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
DartDayring вне форума Ответить с цитированием
Старый 09.11.2010, 19:26   #2
DartDayring
Пользователь
 
Регистрация: 10.02.2010
Сообщений: 55
По умолчанию

Если в func1,func2 предавать int или др. все работает.
Проблема, возникает при передаче об. структуры
DartDayring вне форума Ответить с цитированием
Старый 09.11.2010, 19:35   #3
coinkrsk
пыжашийся нуб
Пользователь
 
Регистрация: 19.06.2010
Сообщений: 93
По умолчанию

func1(struct s *obj) ->func1(s *obj) и так далее
coinkrsk вне форума Ответить с цитированием
Старый 09.11.2010, 19:48   #4
DartDayring
Пользователь
 
Регистрация: 10.02.2010
Сообщений: 55
По умолчанию

не совсем понял
DartDayring вне форума Ответить с цитированием
Старый 09.11.2010, 20:12   #5
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Код:
void (test::*func[2])(test::s *obj);
Цитата:
Сообщение от coinkrsk Посмотреть сообщение
func1(struct s *obj) ->func1(s *obj) и так далее
struct здесь не играет роли. в плюсах справедливы обе формы.
Carbon вне форума Ответить с цитированием
Старый 09.11.2010, 23:39   #6
DartDayring
Пользователь
 
Регистрация: 10.02.2010
Сообщений: 55
По умолчанию

Не могу вызвать функцию
Код:
#include "stdafx.h"
#include "iostream"
#include <stdio.h> 

using namespace std;
class test 
{ 
public:
                struct s
        {
                int a;
        };
                s *obj;
                test()
                {
                        obj=new s[10];
                }
 
        void func1(struct s *obj); 
        void func2(struct s *obj); 
}; 
 
 
void test::func1(struct s *obj) { puts("1"); } 
void test::func2(struct s *obj) { puts("2"); } 
 
int main() 
{
 
	void (test::*func[2])(test:: s *obj); 
 
	func[0] = &test::func1; 
    func[1] = &test::func2; 
 
	int i;
	cin>>i;
	func[i-1](obj);  // здесь !!!
}
Нужна помощь

Последний раз редактировалось DartDayring; 10.11.2010 в 00:31.
DartDayring вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В чем ошибка? olegnaum Общие вопросы C/C++ 7 03.02.2010 12:58
В чем ошибка? hitman12 Паскаль, Turbo Pascal, PascalABC.NET 13 04.11.2009 12:38
В чем ошибка? fosto Паскаль, Turbo Pascal, PascalABC.NET 3 07.12.2008 19:10
В чем ошибка ? Droid Общие вопросы Delphi 13 03.05.2008 18:17
в чем ошибка? Lonix Общие вопросы Delphi 2 24.03.2007 09:41