V
Victor Chew
Can someone tell me why the following code doesn't work:
I have tried both gcc 2.96 and gcc 3.2. I get:
Shouldn't B have inherited read(wchar_t& ch) from A?
TestClass.cpp
-------------
class A
{
public:
virtual void read(wchar_t& ch) { read(&ch, 0, 1); }
virtual void read(wchar_t* buf, int off, int len) = 0;
};
class B : public virtual A
{
public:
virtual void read(wchar_t* buf, int off, int len) {}
};
int main(int argc, char* argv[])
{
wchar_t ch;
B myclass;
myclass.read(ch);
}
I have tried both gcc 2.96 and gcc 3.2. I get:
TestClass.cpp: In function `int main(int, char**)':
TestClass.cpp:21: no matching function for call to `B::read(wchar_t&)'
TestClass.cpp:14: candidates are: virtual void B::read(wchar_t*, int, int)
Shouldn't B have inherited read(wchar_t& ch) from A?