вот часть класса с рассматриваемой функцией
template <class W>
class CBuffer
{ private:
W *arr;
int len;
int nowIndex;
W & operator[](unsigned int i)
{
if (i<len) {
return arr[i];
}
}
void getElement(TListBox* LB)
{
if(typeid(arr)==typeid(CWeather*)){
W tmp;
LB->Items->Clear();
for (int i = 0; i <len; i++) {
if(!(arr[i]==tmp)){
LB->Items->Add(AnsiString("Температура: ") + arr[i].getsTemperature());
LB->Items->Add("Давление: " +arr[i].getsPressure());
LB->Items->Add("Скорость ветра: " + arr[i].getsWindSpeed());
LB->Items->Add("\Направление ветра: "+arr[i].getsWindDirection());
LB->Items->Add("---------------------------");
}
}
}
if (typeid(arr)==typeid(short*))
{
LB->Items->Clear();
for (int i = 0; i <len; i++) {
LB->Items->Add(arr[i]);
}
}
}
в самой проге:
CBuffer<CWeather> *buf = new CBuffer<CWeather>();
CBuffer<short> *buf2 = new CBuffer<short>();
так вот программа не компилируется, жалуется на не соответствие типов, не знаю почему она лезет в оба if сразу, т.е она либо принимает значение CWeather тогда жалуется на вывод LB->Items->Add(arr[i]); и наоборот