代码大致如下:
#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]'*/
}问题如最后一行注释 .  请童鞋们帮忙解答一下原因,谢谢.
               

解决方案 »

  1.   

    vtrTest.push_back((const char *)strNode);  这样?
      

  2.   

    如果用typedef struct _my_type
    {
    char str[2][MAX_PATH];
    }my_type;来代替typedef char my_type[2][MAX_PATH]; 是可以通过编译的。但不知道原因。不知道是不是宏,引起了歧义。
    继续求解中。
      

  3.   

    typedef char my_type[2][MAX_PATH];
    这个意思是:my_type[2][MAX_PATH]  代表char类型char abc == my_type[2][MAX_PATH] abc
      

  4.   

    typedef char my_type[2][MAX_PATH]; 不能这么用
      

  5.   

    //师哥们,typedef char my_type[2][MAX_PATH];//应该可以用吧? 
    //意思是my_type代表char[2][MAX_PATH]类型.
    my_type strNode;//调试可以看到char[2][MAX_PATH]的结构//问题是发生在最后这句哦:
    vtrTest.push_back(strNode);
      

  6.   

    //这个是可以的
    typedef char my_type[2][MAX_PATH];问题是vector的构造器那里,构造数组出错了,具体要看构造器的实现了
    (数组传过去变成指针 丢失了数组结构信息 我猜是这个原因)
      

  7.   

    特地去实现了下,果然这个确实很有问题。
    这个可能是STL的实现问题了。
    真正要解答的话,要等熟读STL源码者了。
    不过应该不影响你实现的,老老实实用struct吧
      

  8.   

    你在vector里面是对象而不是指针,那么push_back的时候,会涉及到对象的拷贝,由于:
    my_type strNode1 = strNode;
    my_type strNode1(strNode);均无法通过编译,这是c/c++语言的规定,所以vector自然就无法push_back了。
      

  9.   

    typedef char my_type[2][MAX_PATH]; 不能这么用
      

  10.   

    难道是要这样子?vtrTest.push_back((const char *)&(*strNode);