Kak da pusna kato parameter.....
9 отговора
249 прегледа
Kak da pusna kato parameter.....
Iskam da naprawq member function, koqto da priema kato parameter razlichni klasowe.
Kak naj lesno stawa towa?
10X
Kak naj lesno stawa towa?
10X
Re: Kak da pusna kato parameter.....
ako gowori6 za C++, naj-dobre q naprawi kato template
ako parametrite sa ot ograni4en broj tipowe, move6 i da q naprawi6 overloaded.
stoj, ta gledaj
ako parametrite sa ot ograni4en broj tipowe, move6 i da q naprawi6 overloaded.
stoj, ta gledaj
Re: Kak da pusna kato parameter.....
например така: (C++)
class base {
base() ;
virtual ~base() ;
} ;
class A : public base {
........
} ;
class B : public base {
...........
} ;
а ето и декларацията на ф-ята :
void MyClass::fun(base *) ; // pointer
или
void MyClass::fun(base &) ; // refference
така можеш за даваш на ф-ята поинтери и към клас A и към B,
като разбира се трябва да определиш кои member функции на base ще ги направиш virtual ... дай още инфо за по-подробна помощ
class base {
base() ;
virtual ~base() ;
} ;
class A : public base {
........
} ;
class B : public base {
...........
} ;
а ето и декларацията на ф-ята :
void MyClass::fun(base *) ; // pointer
или
void MyClass::fun(base &) ; // refference
така можеш за даваш на ф-ята поинтери и към клас A и към B,
като разбира се трябва да определиш кои member функции на base ще ги направиш virtual ... дай още инфо за по-подробна помощ
Re: Kak da pusna kato parameter.....
Ili mojesh da pozlvash abstrakten bazov klas za klasovete koito triabva da priema funkciata ... :> Mnoo zavisi kakvo tochno iskash da praish
Re: Kak da pusna kato parameter.....
Iskam da izpolzwam Templates, ama kak da go naprawq. Imash li nqkakyw code da mi pusnech. Stawa wypros za C++
Re: Kak da pusna kato parameter.....
template <class T1>
void fun(const T1& x) {
.................
}
void fun(const T1& x) {
.................
}
Re: Kak da pusna kato parameter.....
Koe w headar i koe w *.cpp - to?
Towa samo deklaraciqta li e? A kak da go izpolzwam?
Naprimer imam:
CSomeView m_View;
COtherView *m_pOtherView;
strString = m_View.strString
i
strString = m_pOtherView->strString
Iskam da slova w template clas tezi promenlivi s m_
taka che da gi podam na f-n naprimer
InitVariable(template variable)
{
strString = variable.strString;
}
Move li da stane towa?
Towa samo deklaraciqta li e? A kak da go izpolzwam?
Naprimer imam:
CSomeView m_View;
COtherView *m_pOtherView;
strString = m_View.strString
i
strString = m_pOtherView->strString
Iskam da slova w template clas tezi promenlivi s m_
taka che da gi podam na f-n naprimer
InitVariable(template variable)
{
strString = variable.strString;
}
Move li da stane towa?
Re: Kak da pusna kato parameter.....
template <class T> InitVariable(T variable)
{
strString = variable.strString;
}
ili
InitVariable(CSomeView variable)
{
strString = variable.strString;
}
InitVariable(COtherView variable)
{
strString = variable.strString;
}
stoj, ta gledaj
{
strString = variable.strString;
}
ili
InitVariable(CSomeView variable)
{
strString = variable.strString;
}
InitVariable(COtherView variable)
{
strString = variable.strString;
}
stoj, ta gledaj
Re: Kak da pusna kato parameter.....
init.h:
// declaration
template <class T> void initVariable(T var) ;
// implementation
inline template <class T> void initVariable(T *var, CString &s) {
s = var->s ; // внимание! по- добре да е така : s = var->getS() ; и getS()
//да връща const ref към s ...
}
// използваме
somefile.cpp
CSomeView m_View;
COtherView *m_pOtherView;
CString s ;
initVariable<CSomeView>(&m_View, s) ;
initVariable<COtherView>(&m_pOtherView, s) ;
P.S. Не ти препоръчвам а използваш в този случай templates виж дали не може да стате по друг начин,,,
// declaration
template <class T> void initVariable(T var) ;
// implementation
inline template <class T> void initVariable(T *var, CString &s) {
s = var->s ; // внимание! по- добре да е така : s = var->getS() ; и getS()
//да връща const ref към s ...
}
// използваме
somefile.cpp
CSomeView m_View;
COtherView *m_pOtherView;
CString s ;
initVariable<CSomeView>(&m_View, s) ;
initVariable<COtherView>(&m_pOtherView, s) ;
P.S. Не ти препоръчвам а използваш в този случай templates виж дали не може да стате по друг начин,,,
opps!
сложил съм малко странен синтексис правилния е :
initVariable(&m_View, s) ;
initVariable(&m_pOtherView, s) ;
sorry за грешката

initVariable(&m_View, s) ;
initVariable(&m_pOtherView, s) ;
sorry за грешката