Хотя стандарт C ++ не имеет такого требования, некоторым компиляторам требуется, чтобы все шаблоны функций и классов были доступны в каждой используемой системе переводов. Фактически для этих компиляторов тела шаблонных функций должны быть доступны в файле заголовка. Повторить: это означает, что эти компиляторы не позволят их определять в файлах без заголовка, таких как .cpp-файлы
Существует ключевое слово export , которое должно смягчать этот проблема, но он нигде не близок к тому, чтобы быть портативным.
Ну, это правильно, массив исправлен, вы не можете динамически увеличивать его размер. Однако вы можете создать новый массив с большим размером, скопировать предыдущие значения и установить новые элементы равными новым значениям.
Ваши комментарии кажутся шведскими, что не очень помогает. Однако вы, вероятно, хотите сделать это вместо того, чтобы удалить установку значения в нуль, а при добавлении проверить, является ли элемент нулевым, и установить его в новое значение. И если ни один не является нулем, скопируйте массив в новый с оригинальным размером + 1
int originalSize = 10;
object[] sodas = new object[originalSize];
void RemoveSodaAtIndex(int index)
{
if(index >= 0 && index < sodas.Length)
{
sodas[index] = null;
}
}
void AddSoda(object s)
{
for(int i = 0; i < sodas.Length;i++)
{
if(sodas[i]==null)
{
sodas[i] = s;
return;
}
}
originalSize += 1;
object[] temp = new object[originalSize];
for (int i = 0; i < temp.Length; i++)
{
if (i != temp.Length - 2)
{
temp[i] = sodas[i];
}
else
{
temp[i] = s;
}
}
sodas = temp;
}