代码大致如下:
#include<vector>
using std::vector...typedef char my_type[2][MAX_PATH];void CTestDlg::OnOK()
{
vector<my_type> vtrTest;
my_type strNode;
vtrTest.push_back(strNode);/*编译错误提示: cannot convert parameter 1 from 'char[2][260]' to 'const char (&)[2][260] Reason: cannot convert from 'char [2][260]' to 'const char [2][260]'*/
}问题如最后一行注释 . 请童鞋们帮忙解答一下原因,谢谢.
{
char str[2][MAX_PATH];
}my_type;来代替typedef char my_type[2][MAX_PATH]; 是可以通过编译的。但不知道原因。不知道是不是宏,引起了歧义。
继续求解中。
这个意思是:my_type[2][MAX_PATH] 代表char类型char abc == my_type[2][MAX_PATH] abc
//意思是my_type代表char[2][MAX_PATH]类型.
my_type strNode;//调试可以看到char[2][MAX_PATH]的结构//问题是发生在最后这句哦:
vtrTest.push_back(strNode);
typedef char my_type[2][MAX_PATH];问题是vector的构造器那里,构造数组出错了,具体要看构造器的实现了
(数组传过去变成指针 丢失了数组结构信息 我猜是这个原因)
这个可能是STL的实现问题了。
真正要解答的话,要等熟读STL源码者了。
不过应该不影响你实现的,老老实实用struct吧
my_type strNode1 = strNode;
my_type strNode1(strNode);均无法通过编译,这是c/c++语言的规定,所以vector自然就无法push_back了。