Kak da pusna kato parameter.....

9 отговора 249 прегледа
#1

Kak da pusna kato parameter.....

Iskam da naprawq member function, koqto da priema kato parameter razlichni klasowe.
Kak naj lesno stawa towa?
10X

Отговор
в отговор на AdonisXX #2

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
Отговор
в отговор на AdonisXX #3

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 ... дай още инфо за по-подробна помощ

Отговор
в отговор на lndependent #4

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

Отговор
в отговор на AdonisXX #5

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++

Отговор
в отговор на AdonisXX #6

Re: Kak da pusna kato parameter.....

template <class T1>
void fun(const T1& x) {
.................
}

Отговор
в отговор на darklord #7

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?

Отговор
в отговор на Adonisxx #8

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
Отговор
в отговор на Adonisxx #9

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 виж дали не може да стате по друг начин,,,

Отговор
в отговор на darklord #10

opps!

сложил съм малко странен синтексис правилния е :
initVariable(&m_View, s) ;
initVariable(&m_pOtherView, s) ;

sorry за грешката




Отговор