派生类成员函数在c ++中失败

时间:2012-06-02 20:13:55

标签: c++

长话短说:

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“)”谎言

有人给我一些提示吗?

Loki建议的整个计划:

  #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;
    }

2 个答案:

答案 0 :(得分: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;
}

更像是你发布的“摘录”。

答案 1 :(得分:0)

让我猜一下。

在您使用main之前的代码之前,您已使用未配对的大括号关闭了main。所以它不在任何函数之外,除了初始化函数之外,它不适用于表达式。