The analyzer has detected a potential error when the programmer makes a misprint writing ':' instead of '::'.
An unused label is found in the code of a class method. This label is followed by a function call. The analyzer considers it dangerous when a function with such a name is placed inside one of the base classes.
Consider the following sample:
class Employee { public: void print() const {} }; class Manager: public Employee { void print() const; }; void Manager::print() const { Employee:print(); }
The line 'Employee:print();' is very likely to be incorrect. The error is this: unlike it was intended, the function from the own class 'Manager' is called instead of the function from the 'Employee' class. To fix the error we just need to replace ':' with '::'.
This is the fixed code:
void Manager::print() const { Employee::print(); }
Here's one more sample:
namespace Abcd { void Foo() {} } class Employee { void Foo() {} void X() { Abcd:Foo(); } };
The error here is this: the function within the scope of 'Abcd' should have been called. This error is easy to fix:
void X() { Abcd::Foo(); }
This diagnostic is classified as: