C++言語でジェネリック関数を学んでいて最小値を求めたいのですがなぜ最小値が更新されないのかわかりません。C++
コード
#include <stdio.h>
class Compare
{
public:
virtual void print() = 0;
virtual boolLTE(Compare* a) = 0;
};
class Double: public Compare
{
private:
double val;
public:
Double(double v)
{
val= v;
}
boolLTE(Compare* a)
{
if (val<= (static_cast<Double*>(a)->val))
return true;
else return false;
}
void print() { printf("%f\n", val); }
};
Compare* x[10];
void z() //最小値を求める関数
{
Compare *min = x[0];
for (int i = 1; i <10; i++)
{
if(min > x[i])
min = x[i];
}
min ->print();
}
int main()
{
for (int i =0; i <10; i++)
{
x[i] = new Double((i-3)*(i-3)+1);
}
z();
}
これを実行すると最小値10.0000となるのですが、実際の最小値は1.0000となるはずです。しかし更新されません。
回答1件
あなたの回答
tips
プレビュー