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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.07.2009, 17:51   #1
ciaonataha
Форумчанин
 
Регистрация: 12.02.2009
Сообщений: 150
По умолчанию проблемма с классами

Код:
class interface
{
public:
void binaire(int,std::vector <double> &Y,std::vector <double> &F,std::vector <double> &concentration);

Хочу в функции "Jacobian_binaire" опредилить ссылку или как это на функцию "void binaire"
void Jacobian_binaire(std::vector <double> &Y,std::vector <double> &F,std::vector < std::vector<double> > &Jacobian2D,std::vector <double> &concentration,void(*nrfunc)(int,std::vector <double> &Y,std::vector <double> &F,std::vector <double> &concentration));
}

В маин

   int i = 1;
        while(mat.produit[i]!=NULL)
         {
      nt.func     =mat.produit[1]->frontiere[1]; 
      nt.nrfuncv  =&interface::binaire;//We transfer the reference to a class method interface

      nt.jacobian =mat.produit[1]->frontiere[1];
      nt.jacobfunc=&interface::Jacobian_binaire;//We transfer the reference to a class method interface
         i++;
         }


В Ньютоне -Рафсона нужно вызвать эту функцию:

class newt
{

public:

  interface *func;
  interface *jacobian;
  //we declare index type:
  void (interface::*nrfuncv)(int nn, std::vector <double> &v, std::vector <double> &f,std::vector <double> &concentration);
  void (interface::*jacobfunc)(std::vector <double> &v, std::vector <double> &f1, std::vector < std::vector<double> > &J,std::vector <double> &concentration,void(interface::*nrfuncv)(int,std::vector <double> &Y,std::vector <double> &F,std::vector <double> &concentration));

  newt() //Konstruktor
  {
  func = NULL;
  jacobian = NULL;
  }

void calc(std::vector <double> &x, int *check,std::vector <double> &concentration);
}


void newt::calc(std::vector <double> &x, int *check,std::vector <double> &concentration)
{

(jacobian->*jacobfunc)(x,fvec1,J,concentration,(func->*nrfuncv)(GetN(), x, fvec,concentration));
не работает

}

Последний раз редактировалось ciaonataha; 24.07.2009 в 18:02.
ciaonataha вне форума Ответить с цитированием
Старый 24.07.2009, 18:04   #2
ciaonataha
Форумчанин
 
Регистрация: 12.02.2009
Сообщений: 150
По умолчанию

Код:
error: cannot convert ‘void (interface::*)(std::vector<double, std::allocator<double> >&, std::vector<double, std::allocator<double> >&, std::vector<std::vector<double, std::allocator<double> >, std::allocator<std::vector<double, std::allocator<double> > > >&, std::vector<double, std::allocator<double> >&, void (*)(int, std::vector<double, std::allocator<double> >&, std::vector<double, std::allocator<double> >&, std::vector<double, std::allocator<double> >&))’ 

to
 ‘void (interface::*)(std::vector<double, std::allocator<double> >&, std::vector<double, std::allocator<double> >&, std::vector<std::vector<double, std::allocator<double> >, std::allocator<std::vector<double, std::allocator<double> > > >&, std::vector<double, std::allocator<double> >&, void (interface::*)(int, std::vector<double, std::allocator<double> >&, std::vector<double, std::allocator<double> >&, std::vector<double, std::allocator<double> >&))’ in assignment
ciaonataha вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с классами и объектами Shavminator Общие вопросы Delphi 7 18.12.2009 04:11
взаимотношения между классами ciaonataha Общие вопросы C/C++ 3 23.07.2009 18:37
Вопрос с классами. Вадим Буренков Общие вопросы Delphi 11 13.07.2009 10:57
Как пользоваться классами на С++ madmax08 Общие вопросы .NET 4 15.07.2008 23:59