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

Анализатор обнаружил подозрительное приведение типов\. Указатель на класс приводится к указателю на другой класс, при этом классы никак не связаны между собой наследованием\.

Подозрительный код:

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

Возможно, нужно было привести другую переменную\.  Исправленный код:

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

Если же такое поведение является ожидаемым, то следует использовать 'reinterpret\_cast':

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

В этом случае анализатор не будет выдавать предупреждение\.

**Примечание\.** В некоторых проектах, особенно выполняющих низкоуровневые операции, можно встретить очень много приведений между различными структурами, не связанных между собой наследованием, но связанных логически\. Другими словами, такие приведения типов используются сознательно и необходимы\. В этом случае предупреждения анализатора будут только создавать ненужный шум и будет рационально просто отключить диагностику V1027\.