c++ - 命名空间内的类和 C++ 外的设置函数

标签 c++ function namespaces

在这个任务中,我需要设置和获取类和命名空间之外的士兵数量(并在 main 中正确调用它)

namespace GeneralStaff
{

class Troops
{
private:
    int nSoldiers;

public:
    string name;
    string rank;
    
    Troops(string _name, string _rank, )
    {
        name= "Unknown";
        rank= "RankUnknown";
    }
};

} // namespace GeneralStaff

This is outside of class and function

void GeneralStaff::Troops setSoldierN(int n)
{
    nSoldiers= n;
}
在主要:
GeneralStaff::Troops;
    Troops.setSoldierN(10);
我知道我需要在 main (source) 中正确声明对象,问题出在函数集上。

最佳答案

要在类之外定义类的方法,只需使用范围解析(::) 运算符。但是要在类外定义一个函数,你需要在类本身中声明它,而你并没有这样做。检查以下代码,它应该可以工作:

namespace GeneralStaff
{
    class Troops{
        private:
            int nSoldiers;

        public:
            string name;
            string rank;
            void setSoldierN(int x);

            Troops(string _name, string _rank)
            {
                name= _name;
                rank= _rank;
            }
    };
}

void GeneralStaff::Troops::setSoldierN(int n){
    nSoldiers= n;
}
另外,我已经根据构造函数中传入的值初始化了 name 和 rank ,因为如果要使用固定值初始化变量,则不需要传递它们。
并且主函数中的对象应该按如下方式创建:
GeneralStaff::Troops troop("John", "2");
    troop.setSoldierN(10);

关于c++ - 命名空间内的类和 C++ 外的设置函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63058583/

相关文章:

php - 命名空间找不到类

c++ - 什么模式匹配(如果有)适用于 C++ 可变参数模板函数调用?

c++ - 如何在 C++ 中重载赋值运算符的两个方向?

c++ - 为什么我的双端队列元素四处移动?

javascript - JavaScript/jQuery 的顺序

architecture - 在命名空间中分组与为类添加前缀

C++ - 可访问性与可见性

javascript - 使用动态参数数调用动态函数

postgresql - 如何在 postgresql 函数中使用变量进行循环查询

java - 如何获取 JAXB 对象的命名空间