operator[]
кажется излишним, поскольку operator double*
кажется достаточным.
Вот мой код:
struct CStandardData
{
inline operator double* () { return m_standardData; }
//inline double& operator [] (size_t ix) { return m_standardData[ix]; }
size_t m_standardDataRefCnt{ 0 };
double m_standardData[1];
} sd;
Я использую sd
во всех различных ситуациях, включая double *a = sd
, sd[x] = 5.0
, sd[x] >= sd[y]
и т. Д. И независимо от того, закомментирован ли я или operator []
закомментирован или определен, кажется, что код работает правильно.
В каких ситуациях необходимо иметь operator []
?
Я, вероятно, должен был добавить немного контекста:
Я использовал внутренние данные double sd[]
, которые были динамически распределены по большой базе кода> 5000 строк.Затем мне нужно было добавить подсчет ссылок на выделение для этого двойного массива из-за необходимости скопировать объект, в котором он находился, и передать копию пользователю (double sd[]
составляет> 10000 элементов, поэтому я не хотел делать дополнительные копии),Это схема, которую я разработал, чтобы сделать это без необходимости изменять обширную базу кода, используя ее, но не был уверен, что пропуск operator []
может привести к любым проблемам.