C ++向量默认为成员参数

时间:2018-10-10 02:58:16

标签: c++

来自php的新的低级编码,如何正确定义带有矢量的成员默认参数?

     A(int x = 0, std::string y, 
std::vector<std::string> z = {0{"ScreenName","ID"}, ... } 
    ){
            switch(x){
                case 0: CreateNewPlayer(z["ScreenName"], z["ID"]); break;
                default:
                /* log function*/
                break;
              }
        }
    }

1 个答案:

答案 0 :(得分:0)

首先,您需要一个std::map吗? vector没有使用std::string的运算符。

因此,您不能用向量写z["key"](但是可以用地图写)

要使用默认参数,您可以说:

 A(int x = 0, std::string y = "", 
std::vector<std::string> z = {"ScreenName","ID"}, ... )

如果您使用的是地图,则std::map<std::string, int>{{"screenName", 0}}

请查看此问题以获取详细信息How to set default parameter as class object in c++?

脚注:您可能还想阅读有关the details of default arguments

  

仅在函数声明的参数列表和lambda表达式中(从C ++ 14开始)才允许使用默认参数,并且在函数的指针,函数的引用,或在typedef声明中。