在Mac OS下編譯我的代碼時遇到問題。在我的頭文件,該函數的聲明顯然會導致一些錯誤(它在Windows下工作得很好,雖然):編譯mac/linux時std :: pair出錯
#include <string>
#include <vector>
#include <map>
#ifdef WIN32
#include <windows.h>
#endif
[...]
int setProcessEnvironment(
const wchar_t * procName,
const wchar_t * appName = NULL,
const wchar_t * workingDir = NULL,
const wchar_t * cmdArgs = NULL,
const std::vector< std::pair<const wchar_t *, int> > &systemEnvVars = std::vector< std::pair<const wchar_t *, int> >()
);
它看起來像編譯器不喜歡我的對輸入 - 也許我錯過了一些包括或者這裏有什麼問題?
我還沒有完全理解此錯誤消息的最後一行作爲我的功能描述實際上看起來的人在這個錯誤很不同......
我開始想也許有做默認的初始化,但是這裏的Mac和Windows編譯器有什麼區別?
26: error: expected ‘,’ or ‘...’ before ‘>’ token
26: error: wrong number of template arguments (1, should be 2)
/usr/include/c++/4.2.1/bits/stl_pair.h:68: error: provided for ‘template<class _T1, class _T2> struct std::pair’
26: error: template argument 1 is invalid
26: error: template argument 2 is invalid
26: error: default argument missing for parameter 6 of ‘int SysProcManager::setProcessEnvironment(const wchar_t*, const wchar_t*, const wchar_t*, const wchar_t*, const std::vector<std::pair<const wchar_t*, int>, std::allocator<std::pair<const wchar_t*, int> > >&, int)’
159: error: prototype for ‘int SysProcManager::setProcessEnvironment(const wchar_t*, const wchar_t*, const wchar_t*, const wchar_t*, const std::vector<std::pair<const wchar_t*, int>, std::allocator<std::pair<const wchar_t*, int> > >&)’ does not match any in class ‘SysProcManager’
26: error: candidates are: int SysProcManager::setProcessEnvironment(const wchar_t*, const wchar_t*, const wchar_t*, const wchar_t*, const std::vector<std::pair<const wchar_t*, int>, std::allocator<std::pair<const wchar_t*, int> > >&, int)
138: error: int SysProcManager::setProcessEnvironment(const wchar_t*, const wchar_t*, const wchar_t*, const wchar_t*, const std::vector<const wchar_t*, std::allocator<const wchar_t*> >&)
您的錯誤似乎與該函數的調用有關。你能告訴我們26號線在哪裏嗎? – 2010-11-24 21:11:52
我在上面的小代碼示例中包含了第26行 - 它是這個函數的頭文件聲明 – Chris 2010-11-24 21:13:33
你打算如何用一個對空向量的const引用做什麼? – 2010-11-24 21:19:53