我們可以在C++中使用pair作爲參數嗎?我們可以發送一個模板參數嗎?另一對
這是一個測試程序來做到這一點。
#include <iostream>
#include <utility>
int main()
{
std::pair<int,int> m;
m=std::make_pair(1,3);
int r = 3;
int *q = &r;
int **p =&q;
int **t = p;
std::pair<int**,<std::pair<int,int> > > i(p,m);
std::cout<<i[t];
return 0;
}
這是錯誤,我越來越。
Test.cpp: In function ‘int main()’:
Test.cpp:12:45: error: template argument 2 is invalid
std::pair<int**,<std::pair<int,int>>> i(p,m);
^
如果我改變聲明的格式,並通過以下方式編寫的程序,
#include <iostream>
#include <utility>
int main()
{
std::pair<int,int> m;
m=std::make_pair(1,3);
int r = 3;
int *q = &r;
int **p =&q;
int **t = p;
std::pair<
int**,
<
std::pair<
int,
int
>
>
> i(p,m);
std::cout<<i[t];
return 0;
}
另外還有一個錯誤。
Test.cpp: In function ‘int main()’:
Test.cpp:20:7: error: template argument 2 is invalid
> i(p,m);
^
Test.cpp:20:14: error: expression list treated as compound expression in initializer [-fpermissive]
> i(p,m);
什麼可能是這個問題,以及如何解決它?
在一個側面說明,我做了一個方案,並在很老的開發-C++編譯器編譯它在Windows 7機,它採用了類似上述代碼和它運行完美的罰款。這是我大學裏只有那個編譯器的實驗程序。
上面的代碼,我跑了使用GNU G ++ 5.4.0
Ideone兩個窗口7和Ubuntu 16.04:Link to the actual program for reference
您也可以看看實際的錯誤,我面臨的上述鏈接。
看到答案後,我看到我犯的語法錯誤。我不記得我改了多少代碼。代碼鏈接中似乎還有很多其他錯誤。 –