Класс не был объявлен сообщение об ошибке в C ++

0

Таким образом, этот код был предоставлен мне для запуска, и всякий раз, когда я пытаюсь запустить его, я получаю такое же сообщение об ошибке. "Английский класс не был объявлен". Я новичок в C++, поэтому все помогает. В настоящее время я использую программу CodeBlocks для запуска моего кода. Когда я получил сообщение об ошибке, я затем скопировал и вложил его в редактор Dev C++ и получил ту же проблему.

#include <cstdlib>
#include <iostream>

using namespace std;

class Metric {
int meters;
int centis;
public:
       Metric(int m, int cm)
         {
             meters = m; centis = cm;
         }
        Metric( void ) { meters = centis = 0; }

      void ShowMetricData(void)
         {
           cout << "Metric object: meters = " << meters;
           cout << " centimeters = " << centis << "\n\n";
          }


friend class English;
friend bool compare(Metric, English);


};   // code for class English follows this code



class English {
           int  inches, feet;
    public:

 // ‘Default Constructor
         English(void) { feet = 0; inches =  0; }

  // ‘Initializing Constructor
         English(int ft, int in) { feet = ft; inches = in; }

  //  Prototype for a Constructor that converts a
  //    Metric instance  into an English instance
         English(Metric);

  // Prototype for an operator function that converts
  //   an English  instance into a Metric instance
         operator Metric( void );
         friend bool compare(Metric, English);
         };


    /English::operator Metric( )
    // {
    //   Metric MObj;
    //   float MLgth, ELgth;
    //   ELgth = feet * 12 + inches;
    //   MLgth = 2.54 * ELgth;
    //   MObj.meters = (int) ( MLgth / 100.0);
    //   MObj.centis = (int) (MLgth - MObj.meters*100);
    //   cout << "In operator function Metric that converts English ==> Metric: \n\n";
    //   cout << " English object: feet = " << feet
    //              << " and inches = " << inches << "\n\n";
    //   cout << " Metric object: meters  = " << MObj.meters
    //                  << " cms = " << MObj.centis << "\n\n";
    //   return MObj;
    //  }
    //
    //
    // English::English(Metric Met_Obj)
    //{
    //  float MetL, EngL;
    //  MetL = 100.0 * Met_Obj.meters + Met_Obj.centis;
    //  EngL = MetL / 2.54;
    //
    //  feet = (int) ( EngL / 12.0) ;
    //  inches = (int) ( EngL - 12*feet);
    //
    //  cout << "In constructor English(Metric) that converts Metric=>English: \n\n";
    //  cout << " Metric object: meters = " << Met_Obj.meters << " and cms = "<<       Met_Obj.centis << "\n\n";
    //  cout << " feet = " << feet << " inches = " << inches  << "\n\n";
    //}
    //
    //bool compare (Metric mObj, English eObj)
    //   {
    //       float EobjLength;
    //       float MobjLength;
    //
    //       EobjLength = eObj.feet * 12 + eObj.inches;
    //
    //       MobjLength = mObj.meters * 100 + mObj.centis;
    //
    //       if( MobjLength  > EobjLength * 2.54)
    //          return true;
    //       else
    //          return false;
    //}

/


    int main(int argc, char *argv[])
    {
       English EngObj(8, 11);
       Metric MetObj(EngObj);

     //<<<<<<<<<< CODE BLOCK A >>>>>>>>>>>
         if(compare( EngObj,MetObj) )
           {
             cout << "\n\n Metric object is larger\n\n";
             }
          else
             cout << "English object is larger \n\n";
      // <<<<<<<<< END OF CODE BLOCK A >>>>>>>>>>>>>>>
        system("PAUSE");
        return EXIT_SUCCESS;
    }
  • 0
    / English :: operator Metric (), добавьте здесь двойную косую черту и попробуйте снова
  • 0
    раскомментируйте свой закомментированный раздел и добавьте class English; перед классом метрика.
Теги:
class
codeblocks

1 ответ

0
  1. Объявите класс английского языка, прежде чем использовать его в качестве друзей в классе Metric.
  2. Metric MetObj (EngObj); для достижения этого объявите конструктор в классе Metric, который берет английский как вход; Метрика (const Enlish & rhs) {}
  3. правильно выполнить функцию func и правильно передать аргументы в правильном порядке. Как сравнение func предлагают ввод как Metirc, английский, в то время как в основном вы вызываете сравнение (английский, метрический). Если вы хотите это сделать, тогда используйте конвертер, чтобы он работал. НО зачем вы хотите это делать, когда все может быть сделано аккуратно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню