クラスの2つのオブジェクトを追加するためのプログラムを書いていました。
//program for adding 2 objects data of same class
#include<iostream>
using namespace std;
class distances
{
private:
int feet;
float inches;
public:
distances() //constructor
{
feet = 0;
inches = 0.0;
}
distances(int f, float i) //constructor
{
feet = f;
inches = i;
}
void get_data() //taking value
{
cout << "Enter the distance in feet and inches :: " << "\n";
cin >> feet >> inches;
}
void show_data() //showing data
{
cout << "The distance in feet is ::" << feet
<< " and in inches is :: " << inches;
}
void add(distances d1, distances d2); //adding to objects
};
void distances::add(distances d1, distances d2)
{
inches = d1.inches + d2.inches;
feet = 0;
while(inches >= 12)
{
inches = inches - 12;
++feet;
}
feet += d1.feet + d2.feet;
}
void main()
{
distances d1, d2, d3;
d1.get_data();
d2.get_data();
d3.add(d1, d2);
d3.show_data();
getch();
}
私のプログラムは問題なく動作しましたが、2 つのオブジェクトを追加するという私のアプローチは間違っていたと先生は言いましたが、理由は教えてくれませんでした。なぜ私のアプローチが間違っていたのかわかりません。私の友人は、私の問題はd3.add(d1,d2);の行にあるかもしれないと言いました。
本当?
私の2番目の問題は、クラス名、関数名、およびコンストラクター名を距離の代わりに距離として使用すると、次のエラーが発生することでした
1>c:\users\abc\documents\visual studio 2010\projects\pass\pass\pass.cpp(47): error C2872: 'distance' : ambiguous symbol
1> could be 'c:\users\abc\documents\visual studio 2010\projects\pass\pass\pass.cpp(6) : distance'
1> or 'c:\program files (x86)\microsoft visual studio 10.0\vc\include\xutility(899) : iterator_traits<_Iter>::difference_type std::distance(_InIt,_InIt)'