> On 25. Nov 2019, at 11:03, Giuseppe D'Angelo via Development 
> <development@qt-project.org> wrote:
> 
> Il 25/11/19 10:25, Eike Ziller ha scritto:
>>> ?
>> Similar things can happen in C++ with method names.
>> C++ got the ‘override’ keyword to make these breakages detectable by tooling.
>> It looks to me like the case id==propertyname would also be detectable by 
>> tooling?
> 
> What do you mean? Can you make an example? The whole point of shadowing in 
> C++ is to make sure that the above does NOT break.

Funny things can happen if the new method in the base class is virtual.

// in library libA
class A {
};

// in user code
class B {
public:
  void foo();
};

now class A changes to

class A {
public:
  virtual void foo();
};

Code in libA now calls “foo” on instances of subclasses of A, including 
instances of B, with funny results.

I vaguely remember that we had a case of that in Qt Creator where Qt introduced 
some method in one of its classes.

-- 
Eike Ziller
Principal Software Engineer

The Qt Company GmbH
Erich-Thilo-Straße 10
D-12489 Berlin
eike.zil...@qt.io
http://qt.io
Geschäftsführer: Mika Pälsi,
Juha Varelius, Mika Harjuaho
Sitz der Gesellschaft: Berlin, Registergericht: Amtsgericht Charlottenburg, HRB 
144331 B

_______________________________________________
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development

Reply via email to