if 定义类A的对象duixiang else 定义类B的对象duixiang 错误
#include <iostream>
using namespace std;
class A
{
public:
void print(){cout<<"类A\n";}
};
class B
{
void print(){cout<<"类B\n";}
};
int main()
{
char choice;
cin>>choice;
if (choice=='a')
A duixiang;
else
B duixiang;
duixiang.print(); //为什么会错呢
return 0;
}
[解决办法]
if (choice=='a') A duixiang;//这样定义只是在if else中才会有效。。。作用域就只是在if else中else B duixiang;
[解决办法]
#include <iostream>using namespace std;class A{public: void print(){cout<<"类A\n";}};class B{public://这个必须加,print才能在主函数中调用,否则默认的是private void print(){cout<<"类B\n";}};int main(){ char choice; cin>>choice; if (choice=='a') { A duixiang; duixiang.print(); //这样就好了 } else { B duixiang; duixiang.print(); } return 0;}
[解决办法]
因为你是在 if...else... 语句里才声明的“duixiang”,出了if...else...语句就出了这个变量的作用域了
#include <iostream>using namespace std;class BaseAB{public: virtual void print() = 0;};class A : public BaseAB{public: void print(){cout<<"ÀàA\n";}};class B : public BaseAB{ void print(){cout<<"ÀàB\n";}};int main(){ char choice; cin>>choice; BaseAB* p_duixiang; if (choice=='a') { A duixiang; p_duixiang = &duixiang; } else { B duixiang; p_duixiang = &duixiang; } p_duixiang->print(); return 0;}