V1027. Pointer to an object of the class is cast to unrelated class.


The analyzer has detected a suspicious type cast: a pointer to a class is cast to a pointer to another class, neither of which is derived from the other.

Consider the following example:

struct A {};
struct B {};
struct C : B {};
void f(A *a, B *b) {
  C *c = (C*)a;
}

The programmer could have accidentally cast a wrong variable. Then the fixed code looks like this:

void f(A *a, B *b) {
  C *c = (C*)b;
}

If, however, that behavior was intended, the developer should use 'reinterpret_cast':

void f(A *a, B *b) {
  C *c = reinterpret_cast<C*>(a);
}

This modified code will no longer trigger the warning.

Note. In some projects, especially those performing low-level operations, you may find numerous casts between different structures unrelated in terms of inheritance but related logically. In other words, such type casts are intended and necessary. In that case, diagnostic V1027 would only produce noise, so it would be better to turn it off.

According to Common Weakness Enumeration, potential errors found by using this diagnostic are classified as CWE-704.


Bugs Found

Checked Projects
363
Collected Errors
13 495