我有这些课程:
class Base
{
private:
string name;
public:
void setName(string n);
string getName();
void toString();
}
以及由此派生的两个类:
class DerivedA : public Base
{
private:
int width;
public:
void setWidth(int w);
int getWidth();
}
和
class DerivedB : public Base
{
private:
int height;
public:
void setHeight(int h);
int getHeight();
}
现在我的问题。我的主要看起来像这样:
int main()
{
Base* b;
string line;
... file loading ...
while(...)
{
s = cin.getline(file,10);
if(s == "w")
{
b = new DerivedA();
}
else if(s == "h")
{
b = new DerivedB();
}
while(...)
{
b->toString();
}
}
return 0;
}
这总是会终止我的应用程序。我发现该b->toString();
部分可能是问题的根源,因为范围不同。但无论如何,有没有办法我可以做到这一点?(我省略了无聊且不相关的代码部分。)