ソースコードにそれ自体を語らせましょう:
MLine::MLine(int x1, int y1, int x2, int y2)
{
}
MLine::MLine(double x1, double y1, double x2, double y2)
{
}
void __fastcall TVctDiag2::PrepareArrowTail(int x, int y)
{
double length_x1;
double length_y1;
MLine *line = new MLine(x, y, x - length_x1, y - length_y1);
}
コンパイラは次のエラーを生成します:
E2015「shapes.h:100のMLine :: MLine(int、int、int、int)」と「shapes.h:110のMLine :: MLine(double、double、double、double)」の間のあいまいさ
明示的なキャストに従うことで、この問題を解決できます。
MLine *line = new MLine((double)x, (double)y, x - length_x1, y - length_y1);
部分的なキャストでは不十分です。
MLine *line = new MLine((double)x, y, x - length_x1, y - length_y1);
式での暗黙のキャストのルールについてはかなり混乱しています。誰かがこの行動を説明できますか?式'x--length_x1'および'y--length_y1'のデータ型は何ですか?