0

簡単に言うと、次のとおりです。

class A {
        public:
              A();
              ~A();
              void SetID(char* ID);
              char* GetID();
        protected:
              char ID[10];
};

class B: public A {
        public:
              B();
              ~B();
        protected:
              ...
        private:
              ...
};

次に、メインで:

 ...
 B *temp = new B;
 temp->SetID("0x12345678");
 ...

次に、コンパイラは、「temp-> SetID("0x12345678")」が存在する「->トークンの前に、コンストラクタ、デストラクタ、または型変換が予想されます」と述べました

誰かヒントをくれませんか??

ロキが提案したプログラム全体:

  #include <iostream>

  using namespace std;

  class A {
      public:
         A();
         ~A();
         void SetID(char* id);
         char* GetID();
       protected:
            char ID[10];
   };

   void A::SetID(char* id){
         strcpy(ID,id);          
    }
    char* A::GetID(){
         return ID;
    }
    class B: public A {
             public:
                 B();
                ~B();
             protected:
                int num;
     };


    int main(){
    B *temp = new B;
    B->SetID("0x12345678");
    cout<<B->GetID()<<endl;

    return 0;
    }
4

2 に答える 2

1

タイプである を使用Bしていますが、おそらくtemp変数の名前である を使用するつもりでした。

それ以外の:

int main(){
B *temp = new B;
B->SetID("0x12345678");
cout<<B->GetID()<<endl;

return 0;
}

あなたはおそらく次のことを意味していました:

int main(){
B *temp = new B;
temp->SetID("0x12345678");
cout<<temp->GetID()<<endl;

return 0;
}

これは、投稿した「抜粋」に似ています。

于 2012-06-02T21:32:07.407 に答える
0

私に当てさせてください。

mainにあると信じるこのコードに到達する前に、対になっていない中括弧で閉じましたmain。したがって、これは関数の外部にあり、初期化子以外の式の場所ではありません。

于 2012-06-02T20:44:51.993 に答える