Я испытываю некоторые затруднения из-за этого предупреждающего сообщения, они реализованы в шаблонном контейнерном классе
int k = 0, l = 0;
for ( k =(index+1), l=0; k < sizeC, l < (sizeC-index); k++,l++){
elements[k] = arryCpy[l];
}
delete[] arryCpy;
это - предупреждение, что я добираюсь
cont.h: In member function `void Container<T>::insert(T, int)':
cont.h:99: warning: left-hand operand of comma has no effect
cont.h: In member function `void Container<T>::insert(T, int) [with T = double]':
a5testing.cpp:21: instantiated from here
cont.h:99: warning: left-hand operand of comma has no effect
cont.h: In member function `void Container<T>::insert(T, int) [with T = std::string]':
a5testing.cpp:28: instantiated from here
cont.h:99: warning: left-hand operand of comma has no effect
>Exit code: 0
Выражение a,b,c,d,e
похоже на
{
a;
b;
c;
d;
return e;
}
поэтому k
l < (sizeC - index)
.
Для объединения условий используйте &&
или ||
.
k < sizeC && l < (sizeC-index) // both must satisfy
k < sizeC || l < (sizeC-index) // either one is fine.
Выражение k < sizeC, l < (sizeC-index)
возвращает только результат правого теста. Используйте &&
для объединения тестов:
k < sizeC && l < (sizeC-index)
Изменить на:
for ( k =(index+1), l=0; k < sizeC && l < (sizeC-index); k++,l++){
При вычислении выражения запятой возвращается самый правый аргумент, поэтому ваш:
k < sizeC, l < (sizeC-index)
вычисляется как:
l < (sizeC-index)
и, таким образом, пропускает
k < sizeC
, вместо этого используйте &&
для объединения условий.