长话短说:
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;
}
答案 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
。所以它不在任何函数之外,除了初始化函数之外,它不适用于表达式。