Я новичок в C++определенные пользователем преобразования типов в C++
ниже код для преобразования объекта английского расстояния (дюймы футов ") в метры и наоборот
#include <iostream>
using namespace std;
class Distance
{
private:
const float MTF;
int feet;
float inches;
public:
Distance() : feet(0), inches(0.0), MTF(3.280833F) //no argument constructor
{ }
Distance(float meters) : MTF(3.28033F)//(1-arg constructor)
{//coverting metres to distance object
float fltfeet = MTF * meters;
feet = int(fltfeet);
inches = 12*(fltfeet-feet);
}
Distance(int ft, float in) : feet(ft), inches(in), MTF(3.280833F)
{ }
void getdist()//get distance from user
{
cout << "\nEnter feet: "; cin >> feet;
cout << "Enter inches: "; cin >> inches;
}
void showdist() const // o/p the distance
{ cout << feet << "\'-" << inches << '\"'; }
operator float() const //conversion operator
{ // converts distance to meters
float fracfeet = inches/12;
fracfeet += static_cast<float>(feet);
return fracfeet/MTF;
}
};
int main()
{
float mtrs;
Distance dist1 = 2.35F; //meters to distance
cout << "\ndist1 = "; dist1.showdist();
mtrs = static_cast<float>(dist1); //casting distance to meters
cout << "\ndist1 = " << mtrs << " meters\n";
Distance dist2(5, 10.25);
mtrs = dist2; //casting dist2 to meters
cout << "\ndist2 = " << mtrs << " meters\n";
Distance dist3; //new object dist3
dist3 = mtrs; //here is the error
//not converting meters to distance object
cout<<"\ndist3 = ";dist3.showdist();
return 0;
}
но код показывает ошибку:
In member function 'Distance& Distance::operator=(const Distance&)':
error: non-static const member 'const float Distance::MTF', can't use default assignment operator
should'nt это будет преобразование ССО объекта dist3
почему ошибка ОКК? Урс?
Измените свой вопрос, чтобы он содержал [mcve]. Отображаемая ошибка генерируется из другого исходного кода, чем вы предоставили. – Slava
Возможный дубликат [назначение класса с константным членом] (http://stackoverflow.com/questions/11601998/assignment-of-class-with-const-member) –
Это не относится к проблеме, с которой вы сталкиваетесь , но вы установили MTF для разных значений в конструкторе 'Distance (float meters)' по сравнению с вашими конструкторами 'Distance()' и 'Distance (int ft, float in)'. Это одна из причин, по которым сывороточный ответ Славы ниже, если вы можете использовать C++ 11. – Jvinniec