... Bir özet sınıfındaki 'bu işlevin bir başvurusu nasıl kullanılır? Aşağıdaki kod inşaat büyük
class Printable { public:
virtual size_t printTo(Print& p) const = 0;
};
class Printer : public Printable { public:
size_t printTo(Print& p) const {
return p.print("I am a printer");
}
};
Printer pp;
void loop() { Serial.println(pp); }
....
I am a printer
Ancak, ben Printer
bir kamu üyesi fonksiyonu içinde bu yeni bulunan yazdırılabilirliğe kullanmaya çalışırsanız ..
void print() { Serial.println(this); }
o tuğlaları ...
error: call of overloaded 'println(Printer* const)' is ambiguous
note: candidates are:
size_t Print::println(char) <near match>
note: no known conversion for argument 1 from 'Printer* const' to 'char'
size_t Print::println(unsigned char, int) <near match>
note: no known conversion for argument 1 from 'Printer* const' to 'unsigned char'
size_t Print::println(int, int) <near match>
note: no known conversion for argument 1 from 'Printer* const' to 'int'
vs, vs ... Ama neden değil (Serial
bir alt sınıfı olduğu aynı Print
başlığında,) "aday" bulma derleyici ...
size_t println(const Printable&);
hatta
size_t println(void);
herhangi büyü olmadan, ben uyandırmak olabilir this
şöyle her döküm denedim. this
ile soyut sınıf fonksiyonlarını çağırmak mümkün değil mi?
compilable example... here you are için kullanılan tüm bunlar için.
println'ın tanımı nerededir? Lütfen gerçek bir MCVE sağlayın. – SergeyA
_ "Bu sınıf ile soyut sınıf işlevlerini çağırmak mümkün değil mi?" _ Hayır, bu kesinlikle mümkün. Lütfen aslında yapamayacağınızı gösteren bir [MCVE] ekleyin. –
Derleyici, 'Yazıcı' için bir argüman olarak bir işaretçi 'println' aşırı yüklendiğini bildirmediniz. – Logicrat