我需要一种将这两种类型的变量进行转换的方法:
在这个问题中,Jarod42建议使用这里的方法。有没有更简洁的方法来做到这一点? 根据dyp的链接进行编辑 这个
std::array< const char*, 3 >* foo;
const char* foo[][3];
因为我需要能够将这两种类型传递给一个函数。该函数可以通过以下任一方式定义,以使转换更加容易:
void bar( std::array< const char*, 3 >* param );
void bar( const char* param[][3] );
在这个问题中,Jarod42建议使用这里的方法。有没有更简洁的方法来做到这一点? 根据dyp的链接进行编辑 这个
reinterpret_cast
对我有效,但Ivan Shcherbakov将其描述为一个“丑陋的肮脏的技巧”。我已经贴出了代码,但我不明白为什么这是一个技巧,或者为什么会有什么问题?与Nathan Monteleone建议的模板方法相比,这种方法一定更好吗?void bar( std::array< const char*, 3 >* param ){}
void main( void )
{
static const char* cStyle[][3] = { NULL };
std::array< const char*, 3 > foo = { NULL };
std::array< const char*, 3 >* stlStyle = &foo;
bar( reinterpret_cast< std::array< const char*, 3 >* >( cStyle ) );
bar( stlStyle );
}
foo
中存储什么内容吗? - edmzstd :: vector
呢? - Shoe