gpt4 book ai didi

python - 不能声明双数组?

转载 作者:行者123 更新时间:2023-11-28 04:23:15 25 4
gpt4 key购买 nike

我正在使用 Python 2.7、C++ 和 Visual Studio 2017。

我今天正在使用这个库 https://github.com/lava/matplotlib-cpp

matplotlibcpp.h 有多个方法定义。在第 1469 行,他们这样定义内联 ginput:

inline std::vector<std::array<double, 2>> ginput(const int numClicks = 1, const std::map<std::string, std::string>& keywords = {}){
PyObject *args = PyTuple_New(1);
PyTuple_SetItem(args, 0, PyLong_FromLong(numClicks));

// construct keyword args
PyObject* kwargs = PyDict_New();
for(std::map<std::string, std::string>::const_iterator it = keywords.begin(); it != keywords.end(); ++it)
{
PyDict_SetItemString(kwargs, it->first.c_str(), PyUnicode_FromString(it->second.c_str()));
}

PyObject* res = PyObject_Call(
detail::_interpreter::get().s_python_function_ginput, args, kwargs);

Py_DECREF(kwargs);
Py_DECREF(args);
if (!res) throw std::runtime_error("Call to ginput() failed.");

const size_t len = PyList_Size(res);
std::vector<std::array<double, 2>> out;
out.reserve(len);
std::array<double, 2> position;
for (size_t i = 0; i < len; i++) {
PyObject *current = PyList_GetItem(res, i);

position[0] = PyFloat_AsDouble(PyTuple_GetItem(current, 0));
position[1] = PyFloat_AsDouble(PyTuple_GetItem(current, 1));
out.push_back(position);
}
Py_DECREF(res);

return out;
}

我在使用 std::array<double, 2> position; 时遇到问题线。我得到一个错误:

an inconcrete type is not allowed

这是我尝试编译时的输出。是西类牙语。

> 1>------ Operación Compilar iniciada: proyecto: ConsoleApplication2, configuración: Release x64 ------
1>mainAux.cpp
1>c:\users\lraulmn\source\repos\consoleapplication2\consoleapplication2\matplotlibcpp.h(595): warning C4244: 'argumento': conversión de 'const double' a 'long'; posible pérdida de datos
1>c:\users\lraulmn\source\repos\consoleapplication2\consoleapplication2\matplotlibcpp.h(1491): error C2079: 'position' utiliza class 'std::array<double,2>' sin definir
1>c:\users\lraulmn\source\repos\consoleapplication2\consoleapplication2\matplotlibcpp.h(1495): error C2109: el subíndice requiere una matriz o tipo de puntero
1>c:\users\lraulmn\source\repos\consoleapplication2\consoleapplication2\matplotlibcpp.h(1496): error C2109: el subíndice requiere una matriz o tipo de puntero
1>c:\users\lraulmn\source\repos\consoleapplication2\consoleapplication2\matplotlibcpp.h(1497): error C2664: 'void std::vector<std::array<double,2>,std::allocator<_Ty>>::push_back(_Ty &&)': el argumento 1 no puede convertirse de 'int' a 'const _Ty &'
1> with
1> [
1> _Ty=std::array<double,2>
1> ]
1>c:\users\lraulmn\source\repos\consoleapplication2\consoleapplication2\matplotlibcpp.h(1497): note: Razón: no se puede realizar la conversión de 'int' a 'const _Ty'
1> with
1> [
1> _Ty=std::array<double,2>
1> ]
1>c:\users\lraulmn\source\repos\consoleapplication2\consoleapplication2\matplotlibcpp.h(1497): note: Uso del tipo no definido 'std::array<double,2>'
1>c:\users\lraulmn\source\repos\consoleapplication2\consoleapplication2\matplotlibcpp.h(1469): note: vea la declaración de 'std::array<double,2>'
1>Compilación del proyecto "ConsoleApplication2.vcxproj" terminada -- ERROR.
========== Compilar: 0 correctos, 1 incorrectos, 0 actualizados, 0 omitidos ==========

我会放一个 screenshot无论如何,这样您就可以更好地阅读它。

我想我缺少一个库或包含在 visual studio 属性中,因为据我所知,该行具有正确的语法,而且人们也没有报告此错误。我希望这对某人来说很容易解决!提前致谢。

最佳答案

显然 GitHub 上的文件确实使用了 std::array,但不包括 array standard header .

包含它解决了问题。

关于python - 不能声明双数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54979385/

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