-4

エラーがどこにあるのかわかりません。助けてください。エラーが予想されます。または}しかし、私はすでにそこに置いていますが、実行できません。理由を知っていますか? 被駆動クラスは によって閉じられます。それでもプログラムはコンパイルできません。私を案内してくださいありがとう

  #include <iostream>
    using namespace std;
    class myBase{
          private:
                  int foodmoney;
                  int hobbymoney;

                  public:
               void setdata();
          friend int caldata();
                 };
                 void myBase::setdata(){
                      cout<<"Enter foodmoney :" ;cin>>foodmoney;
                      cout<<"enter hoobymoney:";cin>>hobbymoney;
                      }
              int caldata(int sum,int foodmoney,int hobbymoney){
                        cin>>foodmoney;
                        cin>>hobbymoney;          
                        sum=(foodmoney+hobbymoney)/2;
                        return sum;

                             }


        class Derivedclass:public myBase{
                        int moneyforfood,moneyforhobby;
                        public:
               int setmydrived(int moneyforfood,int moneyforhobby){
                        cout<<"enter money for food(drived class)"<<endl;
                        cin>>moneyforfood;
                        cout<<"enter money for hobby(drived class)"<<endl;
                        cin>>moneyforhobby;
                        }

                        int calculatedrived(){

                   int sumd=(moneyforfood+moneyforhobby);
                     cout<<"avg money on frived class "<<sumd<<endl;
                     };


                    int main(){
                     myBase baseobj;
                     baseobj.setdata();
                     int caldata();
          Derivedclass obj;
                     int setmydrived();
                     obj.calculatedrived();
                      system("puase");

         }
4

3 に答える 3

4

最後のクラスの定義に右中括弧 (およびセミコロン) がありません。

適切なインデント スタイルを使用すると、そのようなことを簡単に見つけることができます。

また、何かを返す関数に 2 つの return ステートメントがありません。それは未定義の動作です。

于 2013-03-24T10:21:50.620 に答える
1

;クラス宣言の後に追加する必要があります。例:

class Whatever {

};
于 2013-03-24T10:22:19.017 に答える
0

コードにいくつかのエラーがありました:

  • の右中括弧 ( })がありませんでしたclass Derivedclass:public myBase

  • system("pause") の一時停止のスペルが正しくありませんでした

  • および関数は整数を返す必要がint setmydrivedありint calculatedrivedますが、整数を返していませんでした。

バグを修正しました。次のコードは正常に動作します ( IDEONEのデモを参照)。

#include <iostream>
using namespace std;
class myBase
{
private:
    int foodmoney;
    int hobbymoney;

public:
    void setdata();
    friend int caldata();
};
void myBase::setdata()
{
    cout<<"Enter foodmoney :" ;cin>>foodmoney;
    cout<<"enter hoobymoney:";cin>>hobbymoney;
}
int caldata(int sum,int foodmoney,int hobbymoney)
{
    cin>>foodmoney;
    cin>>hobbymoney;          
    sum=(foodmoney+hobbymoney)/2;
    return sum;

}


class Derivedclass:public myBase
{
    int moneyforfood,moneyforhobby;
public:
    int setmydrived(int moneyforfood,int moneyforhobby)
    {
        cout<<"enter money for food(drived class)"<<endl;
        cin>>moneyforfood;
        cout<<"enter money for hobby(drived class)"<<endl;
        cin>>moneyforhobby;
                    /*THIS FUNCTION DOESNOT RETURN ANY INT VAL*/
    }

    int calculatedrived()
    {

        int sumd=(moneyforfood+moneyforhobby);
        cout<<"avg money on frived class "<<sumd<<endl;
        //return sumd;
                    /*THIS FUNCTION DOESNOT RETURN ANY INT VAL*/

    }
};

int main()
{
    myBase baseobj;
    baseobj.setdata();
    int caldata();
    Derivedclass obj;
    int setmydrived();
    obj.calculatedrived();
    system("pause");

}
于 2013-03-24T10:23:54.440 に答える