﻿# V120\. Member operator\[\] of object 'foo' is declared with 32\-bit type argument, but is called with memsize type argument\.


> This rule belongs to the "Diagnosis of 64\\\-bit errors" group\\\. The rules in this group are no longer developed and may be disabled in the future\\\. If you use these rules, please \[contact our support team\]\(https://pvs\-studio\.com/en/about\-feedback/\)—we will help you find a replacement or suggest an alternative solution\\\.

The analyzer detected a potential error of working with classes that contain operator\[\]\.

Classes with an overloaded operator\[\] are usually a kind of an array where the index of the item being called is operator\[\] argument\. If operator\[\] has a 32\-bit type formal argument but [memsize](https://pvs-studio.com/en/blog/terms/0030/)\-type is used as an actual argument, it might indicate an error\. Let us consider an example leading to the warning V120: 

```cpp
class MyArray {
  int m_arr[10];
public:
  int &operator;[](unsigned i) { return m_arr[i]; }
} Object;
size_t k = 1;
Object[k] = 44; //V120
```

This example does not contain an error but might indicate an architecture shortcoming\. You should either work with MyArray using 32\-bit indexes or modify operator\[\] so that it takes an argument of size\_t type\. The latter is preferable because memsize\-types not only serve to make a program safer but sometimes allow the compiler to build a more efficient code\.

The related diagnostic warnings are [V108](https://pvs-studio.com/en/docs/warnings/v108/) and [V302](https://pvs-studio.com/en/docs/warnings/v302/)\.