Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 可以在if语句中声明类吗?_C++ - Fatal编程技术网

C++ 可以在if语句中声明类吗?

C++ 可以在if语句中声明类吗?,c++,C++,所以问题是“健康”不在这个范围内,我理解为什么,我想你理解我想做什么,我不认为有可能用“如果”来做,还有别的方法吗 谢谢你的帮助 #include<iostream> class Knight { int health = 10; }; class Mage { int health = 8; }; ``` int main () { int player_class; std::cin >> player_class;

所以问题是“健康”不在这个范围内,我理解为什么,我想你理解我想做什么,我不认为有可能用“如果”来做,还有别的方法吗

谢谢你的帮助

#include<iostream>

class Knight
{
    int health = 10;
};

class Mage
{
    int health = 8;
};


```
int main ()
{
    int player_class;
    std::cin >> player_class;

    if(player_class == 1) Knight player;
    if(player_class == 2) Mage player;

    std::cout << health;
}
#包括
阶级骑士
{
int health=10;
};
职业法师
{
int-health=8;
};
```
int main()
{
国际级;
std::cin>>播放器类;
如果(玩家等级==1)骑士玩家;
如果(玩家等级==2)法师玩家;

std::cout是的,您可以在
if语句中声明class对象,但声明对象的范围位于if语句中

如果要在
If语句
之外访问它,请按如下所示创建一个指针和基类

#include <iostream>
#include <memory>    

class base {
        public:
            int health;
            base(int arg):health(arg){ } 
   virtual ~base(){ }       
};

class Knight : public base
{
    public:
          Knight():base(10){}
};

class Mage : public base
{
    public:
          Mage():base(8){}
};

int main ()
{
    int player_class;
    std::cin >> player_class;
    
   std::unique_ptr<base>  bPtr;

    if(player_class == 1) bPtr = std::make_unique<Knight>();
    if(player_class == 2) bPtr = std::make_unique<Mage>();

    std::cout << bPtr->health;
}
#包括
#包括
阶级基础{
公众:
国际卫生组织;
base(int-arg):运行状况(arg){
虚拟~base(){}
};
职业骑士:公共基地
{
公众:
奈特():基(10){}
};
职业法师:公共基地
{
公众:
Mage():基(8){}
};
int main()
{
国际级;
std::cin>>播放器类;
std::唯一的ptr bPtr;
如果(player_class==1)bPtr=std::make_unique();
如果(player_class==2)bPtr=std::make_unique();
性病:妇女健康;
}

从公共基继承类,然后在if外部创建
std::unique_ptr
std::variant
也可以工作。阅读有关继承和多态性的内容。它们是变量声明,而不是类。代码中有两个类定义,但没有类声明。