C++ 多线程和获取错误调用函数
使用Microsoft Kinect VS 2013为多线程编写代码C++ 多线程和获取错误调用函数,c++,multithreading,visual-c++,file-io,C++,Multithreading,Visual C++,File Io,使用Microsoft Kinect VS 2013为多线程编写代码 char fnameC[sizeof "C:\\Users\\Adam\\Desktop\\Skeleton_RGBDepth_DataAcquisition2013\\Skeleton_RGBDepth_DataAcquisition2013\\Color_Image\\Color_01_c1_00_00_000.png"]; char fnameD[sizeof "C:\\Users\\Adam\\Desktop\\Ske
char fnameC[sizeof "C:\\Users\\Adam\\Desktop\\Skeleton_RGBDepth_DataAcquisition2013\\Skeleton_RGBDepth_DataAcquisition2013\\Color_Image\\Color_01_c1_00_00_000.png"];
char fnameD[sizeof "C:\\Users\\Adam\\Desktop\\Skeleton_RGBDepth_DataAcquisition2013\\Skeleton_RGBDepth_DataAcquisition2013\\Depth_Image\\Depth_01_c1_00_00_000.png"];
int main() {
set up stuff....
while(1) {
setup of the color image frame and depth image frame...
std::thread im01(cv::imwrite, std::ref(fnameC), std::ref(colorImage));
std::thread im02(cv::imwrite, std::ref(fnameD), std::ref(depthImage));
im01.join();
im02.join();
}
}
我得到一个错误:
错误1错误C2090:函数返回数组c:\program files(x86)\microsoft visual studio 12.0\vc\include\xrefwrap 432 1 Skeleton\u RGBDepth\u DataAcquisition2013
不太清楚发生了什么…需要帮助谢谢;我会喜欢的 C2090
是:
您可以在xrefwrap:432
中点击此按钮。这是由std::ref(fnameC)
和char fnameC[…]的定义引起的。生成的std::reference_wrapper.Get()
应该返回char[]
,因此出现错误
另外,使用最大路径作为路径缓冲区。对字符串使用std::string
。C2090
是:
您可以在xrefwrap:432
中点击此按钮。这是由std::ref(fnameC)
和char fnameC[…]的定义引起的。生成的std::reference_wrapper.Get()
应该返回char[]
,因此出现错误
另外,使用最大路径作为路径缓冲区。对字符串使用std::string
。C2090
是:
您可以在xrefwrap:432
中点击此按钮。这是由std::ref(fnameC)
和char fnameC[…]的定义引起的。生成的std::reference_wrapper.Get()
应该返回char[]
,因此出现错误
另外,使用最大路径作为路径缓冲区。对字符串使用std::string
。C2090
是:
您可以在xrefwrap:432
中点击此按钮。这是由std::ref(fnameC)
和char fnameC[…]的定义引起的。生成的std::reference_wrapper.Get()
应该返回char[]
,因此出现错误
另外,使用最大路径作为路径缓冲区。对字符串使用std::string
。这可能是VS中的一个缺陷,因为a应该只返回.get()
上的引用,或者通过操作符T&
进行隐式转换,因此不应该触发此错误。请注意,您的问题在g++4.8.2中不可复制。但是,如果删除引用包装器,您应该不会有问题
无论哪种方式,都需要一个常量std::string&
,而不是字符(&)[136]
。无论如何,使用std::string
s是更好的方法,因此这将是研究它们的好时机。这可能是VS中的一个缺陷,因为a应该只返回.get()
上的引用或通过操作符T&
进行隐式转换,因此不应该触发此错误。请注意,您的问题在g++4.8.2中不可复制。但是,如果删除引用包装器,您应该不会有问题
无论哪种方式,都需要一个常量std::string&
,而不是字符(&)[136]
。无论如何,使用std::string
s是更好的方法,因此这将是研究它们的好时机。这可能是VS中的一个缺陷,因为a应该只返回.get()
上的引用或通过操作符T&
进行隐式转换,因此不应该触发此错误。请注意,您的问题在g++4.8.2中不可复制。但是,如果删除引用包装器,您应该不会有问题
无论哪种方式,都需要一个常量std::string&
,而不是字符(&)[136]
。无论如何,使用std::string
s是更好的方法,因此这将是研究它们的好时机。这可能是VS中的一个缺陷,因为a应该只返回.get()
上的引用或通过操作符T&
进行隐式转换,因此不应该触发此错误。请注意,您的问题在g++4.8.2中不可复制。但是,如果删除引用包装器,您应该不会有问题
无论哪种方式,都需要一个常量std::string&
,而不是字符(&)[136]
。无论如何,使用std::string
s更好,所以现在是研究它们的好时机
A function cannot return an array. Return a pointer to an array instead.
The following sample generates C2090:
// C2090.cpp
int func1(void)[] {} // C2090