const map的初始化
首先,在C++中,一个被const修饰的变量是需要在声明时就进行赋值的,那么,对于复杂类型,该如何进行初始化?
对于一个仅被const修饰的map,我们可以用如下方式进行初始化
相比C#的Dictionary的初始化,我们需要在每组值前面加上std::map<T1,T2>::value_type,value_type是泛型编程中用于同一访问容器元素的一个typedef(下图是由于C++11中用using取代了typedef)
const static的初始化
当一个map再加上static修饰符时,就无法再使用上文的方法进行初始化了,编译器会抛出如下错误:
这里,我们就需要将声明和初始化分开写了,首先,在类中声明这个变量(这里在MailClientSocket.h中进行声明)
然后,转到MailClientSocket.cpp中进行初始化
如果将初始化放在MailClientSocket.h中,编译器会抛出一个重定义的错误
也就是说对于一个const static map的变量,我们的声明和初始化需要分放在 .h 以及 .cpp 中才可以。