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 | 1100 (909) | mihies |
| » | [C++] charset-aOddelek: Programiranje | 1027 (884) | SasoS |
| » | prosim če mi pomagate rešiti nalogoOddelek: Programiranje | 1405 (1077) | roksin |
| » | [C++] Pretvorba iz int v char *Oddelek: Programiranje | 3082 (2458) | Gundolf |
| » | [C] MySQLOddelek: Programiranje | 2946 (1968) | Tutankhamun |