首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

if 定义类A的对象duixiang else 定义类B的对象duixiang 异常

2012-03-28 
if 定义类A的对象duixiangelse 定义类B的对象duixiang错误#include iostreamusing namespace stdclass

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

[解决办法]

C/C++ code
if (choice=='a')    A duixiang;//这样定义只是在if else中才会有效。。。作用域就只是在if else中else    B duixiang;
[解决办法]
C/C++ code
#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...语句就出了这个变量的作用域了

C/C++ code
#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;} 

热点排行