Forum » Programiranje » [c++] Virtualne funkcije
[c++] Virtualne funkcije
zhigatsey ::
Živjo,
malo sem spremenil code convention in bi rad imel v razredih "get" in "set" metode brez
predpon get in set... npr.:
Napaka pa se pojavi pri dedovanju... npr.:
Napaka:
/data/temp/test/main.cpp||In function 'int main()':|
/data/temp/test/main.cpp|35|error: no matching function for call to 'Derived::charset()'|
/data/temp/test/main.cpp|24|note: candidates are: virtual void Derived::charset(const std::string&)|
||=== Build finished: 1 errors, 0 warnings ===|
Ali na tak način ne gre??? V Derived classu izgleda da overridana "set" metoda "povozi" še
dedovani getter iz Base classa?
PS: Naslov teme je malo trapast ampak se nisem mogel spomniti nič boljšega
malo sem spremenil code convention in bi rad imel v razredih "get" in "set" metode brez
predpon get in set... npr.:
class NamestoTega { void setCharset(const std::string& charset); const std::string& getCharset() const; }; class BiImelTole { void charset(const std::string& charset); const std::string& charset() const; };
Napaka pa se pojavi pri dedovanju... npr.:
#include <iostream> class Base { public: virtual void charset(const std::string& charset) { m_charset = charset; } virtual const std::string& charset() const { return m_charset; } private: std::string m_charset; }; class Derived : public Base { public: virtual void charset(const std::string& charset) { Base::charset(charset); } }; int main() { Derived d; d.charset("Bla"); std::cout << d.charset() << std::endl; return 0; }
Napaka:
/data/temp/test/main.cpp||In function 'int main()':|
/data/temp/test/main.cpp|35|error: no matching function for call to 'Derived::charset()'|
/data/temp/test/main.cpp|24|note: candidates are: virtual void Derived::charset(const std::string&)|
||=== Build finished: 1 errors, 0 warnings ===|
Ali na tak način ne gre??? V Derived classu izgleda da overridana "set" metoda "povozi" še
dedovani getter iz Base classa?
PS: Naslov teme je malo trapast ampak se nisem mogel spomniti nič boljšega
- spremenil: zhigatsey ()
xordie ::
V bistvu se skrijejo vse funkcije razreda Base, ki so enakega imena kot tiste deklarirane v Derived.
Uporabi v derived using Base::charset za dostop do preostalih funkcij.
Uporabi v derived using Base::charset za dostop do preostalih funkcij.
class Derived: public Base { public: using Base::charset; virt.... };
x
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [C#] Sort za string (slovenska abeceda)Oddelek: Programiranje | 976 (785) | mihies |
» | [C++] charset-aOddelek: Programiranje | 912 (769) | SasoS |
» | prosim če mi pomagate rešiti nalogoOddelek: Programiranje | 1310 (982) | roksin |
» | [C++] Pretvorba iz int v char *Oddelek: Programiranje | 2973 (2349) | Gundolf |
» | [C] MySQLOddelek: Programiranje | 2826 (1848) | Tutankhamun |