== Why is this an issue? include::../description.adoc[] === Exceptions This rule doesn't raise an issue for constants. If the variable is `const`, there is no risk of confusion. === Noncompliant code example [source,cpp,diff-id=1,diff-type=noncompliant] ---- class Parent { public: static int count; }; class Child : public Parent { public: Child() { Child::count++; // Noncompliant } }; ---- === Compliant solution [source,cpp,diff-id=1,diff-type=compliant] ---- class Parent { public: static int count; }; class Child : public Parent { public: Child() { Parent::count++; } }; ---- ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) === Message Do not access "X" with derived type "Y". ''' == Comments And Links (visible only on this page) === on 21 Jan 2016, 09:57:11 Alban Auzeill wrote: \[~ann.campbell.2] Given the following {cpp} example: ---- class Parent { public: static int count; }; typedef Parent ParentAlias1; typedef Parent ParentAlias2; class Child : public ParentAlias2 { public: Child() { Child::count++; } }; ---- I'm able to identify: * the static member name "count" * the qualifier that prefix the member "Child" But to be able to create the message: {code}Replace "X" with "Y".{code} It's sometime ambigus to propose the replacement, in the above example it can be "Parent", "ParentAlias1" or "ParentAlias2". That's why I propose a message with only the member name and the qualifier name: {code} Do not access "Z" with derived type "X".{code} In this case it would be: {code} Do not access "count" with derived type "Child".{code} === on 23 Jan 2016, 14:53:05 Ann Campbell wrote: That's fine [~alban.auzeill]. include::../comments-and-links.adoc[] endif::env-github,rspecator-view[]