использование своих функций, Error C2601

  • Автор темы Lusika
  • Дата начала
Статус
Закрыто для дальнейших ответов.
L

Lusika

Подскажите пожалуйста. У меня есть пара функций, есть для них прототипы, а компилер говорит, что неправильное определение функций, я сомтрела в мсдн по коду ошибки, но не разобралась.

Может я не туда прототипы сую?
У меня проект создан через MFC AppWizard; соответственно файлы myproj.cpp myproj.h myprojDlg.cpp myprojDlg.h
я прототипы в myprojDlg.h ставлю:
Код:
int dayInMonth(int numb_month, int year);
bool checkvisokos(int god);
вот сам пример исользования функций:
Код:
void CMyprojDlg::OnOK() 
{
UpdateData (TRUE);
int dayInMonth(int numb_month, int year)
{	int dIm;
switch(numb_month)
{ 
case '1':{dIm=31;;break; }
case '2':{ if !(checkvisokos(year)) {dIm=28;}else {dIm=29;} break;}
case '3':{dIm=31; break;}
case '4':{dIm=30; break;}
case '5':{dIm=31; break;}
case '6':{dIm=30; break;}
case '7':{dIm=31; break;}
case '8':{dIm=31; break;}
case '9':{dIm=30; break;}
case '10':{dIm=31;break;}
case '11':{dIm=30;break;}
case '12':{dIm=31;break;}

}
return dIm;
} 
bool checkvisokos(int god)
{
if ( div(god,4).rem ==0) {return true;}else {return false;}
}
... 
int nM = currt.GetMonth(); 
int nY = currt.GetYear();
int dify=nY-dry;
int difm=nM-drm;
int difd=nD-drd;
...
if (difd <0){int res= dayInMonth(nM,nY);difm=difm-1;difd=difd+res;}
.......
}
 
L

Lusika

Я вынесла функции из другой функции, а теперь линковщик ругается:
ну вот...перенесла функции...закомпилилось, но теперь линковщик ругается:
error LNK2001: unresolved external symbol "public: int __thiscall CMyprojDlg::dayInMonth(int,int,bool)" (?dayInMonth@CMyprojDlg@@QAEHHH_N@Z)

и на вторую функцию тоже :-(
 
S

SunSanych

Линковщик говорит, что Вы пытаетесь вызвать функцию класса CMyprojDlg с именем dayInMonth и тремя переменными имеющие тип int, int, bool. А такой функции нет.
И он прав. Так как, если Вы ничего не меняли, то Ваши функции не принадлежат классу CMyprojDlg, а являются глобальными, а функция dayInMonth имеет только два параметра с типом int.
Скорее всего Вы просто передали в функцию лишнюю переменную. Проверьте еще раз по-внимательнее.
Или, вариант, что вы эти две функции определили в теле класса CMyprojDlg (из листинга это не понятно), тогда их надо или вынести от туда или их реализацию начинать так
intCMyprojDlg::dayInMonth
и
bool CMyprojDlg::checkvisokos
но тогда их нельзя будет использовать в других классах.
Удачи.
 
L

Lusika

Спасиб, разобралась, у меня прототипы всё же были не там.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!