我们的想法是使用静态成员函数来更新同一类中的静态数据成员的值
template<typename K,typename U>
class Map{
private:
static pair<K,U> default_value;
public:
static void set_default(K& k,U& u){default_value=make_pair(k,u);}
};
int main(){
int a{8};
int b{9};
Map<int,int>::set_default(a,b);
return 0;
}
这里我收到一个错误:对Map<int,int>::default_value
答案 0 :(得分:3)
您需要为班级以外的default_value;
提供定义,因为它是odr-used
template<typename K,typename U>
class Map{
static pair<K,U> default_value;
// ...
};
template <typename K, typename U>
pair<K,U> Map<K, U>::default_value;
在课堂内你只是声明它,但没有定义它。当您实际尝试分配链接器时,这会导致链接器错误。