gpt4 book ai didi

c++ - 没有合适的默认构造函数可用

转载 作者:IT老高 更新时间:2023-10-28 23:14:18 25 4
gpt4 key购买 nike

我的 C++ 程序出现以下错误:

1>          c:\users\thom\documents\cworkspace\barnaby\barnaby\timezone.cpp(14) : see reference to class template instantiation 'std::map<_Kty,_Ty>' being compiled

这在错误堆栈中有点下降,但指向这行代码:

static std::map<const std::string, Timezone>    timezoneMap;

原因是 Timezone 有一个相当复杂的构造函数,但没有默认构造函数。这是错误的那一部分:

c:\program files\microsoft visual studio 10.0\vc\include\map(215): error C2512: 'Timezone::Timezone' : no appropriate default constructor available

1> c:\program files\microsoft visual studio 10.0\vc\include\map(210) : 在编译类模板成员函数 'Timezone &std::map<_Kty,_Ty>::operator [](const std::basic_string<_Elem,_Traits,_Ax> &)'

我的问题是,为什么?为什么 map 试图构造一个 Timezone 对象?如果我总是将完全成形的对象放入我的 map 中,为什么还需要它?特别是初始化 map 时为什么会出现这个错误?

最佳答案

您可能正在使用 mapoperator[],而 确实 需要默认构造函数(如果不需要,如何它会处理 map 中不存在 key 的情况吗?)。如果您使用 insert 而不是 可能 可以不提供一个(我不记得标准是否需要所有 map 的默认构造函数,或者只是在你使用那个运算符)。

关于c++ - 没有合适的默认构造函数可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8013449/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com