В классе вы можете иметь методы, которые принадлежат экземпляру
или вы можете иметь статические функции, которые не зависят от
экземпляр, т.е. не имеет указателя "this".
Когда вы пишете FCalc.GetUserOperation (), вы не согласны,
либо пиши
FCalc foo(...)
auto ch = foo.GetUserOperation(); // calling the method on the instance foo
или объявить GetUserOperation
статический
static char GetUserOperation();
...
auto ch = FCalc::GetUserOperation();
Ваш конструктор по умолчанию FCalc неверен, вы объявляете локальные переменные и
затем инициализируйте их там, они перестают существовать, как только конструктор остается.
Вместо этого вы могли бы написать что-то вроде (до C ++ 11)
FCalc::FCalc()
: NewUserNum1(0)
, NewUserNum2(0)
, NewUserOperation(0);
{}
аналогичным образом вы можете написать другой конструктор как
FCalc::FCalc(int UserNum2, int UserNum1, char UserOperation)
: NewUserNum1(UserNum1)
, NewUserNum2(UserNum2)
, NewUserOperation(UserOperation);
{}
Как правило, переменные-члены объявляются с префиксом m_
или _
чтобы было легче увидеть, что это переменная экземпляра
и есть заглавные буквы для типов, но это только мой
предпочтение.
Избегайте также объявлять глобальные экземпляры ваших классов, это было бы
Достаточно в вашей главной, чтобы объявить экземпляр
FCalc foo(iGetUserNum2(), iGetUserNum1(), chGetUserOperation());
и затем передать его пользователю UserOperation
sayUserOperation(foo);
объявив функцию как
void sayUserOperation(FCalc& f)
{
...
auto ch = f.GetUserOperation();
}