У меня есть класс, который я конвертирую:
class MyClass
{
public::
void foo( void )
{
static const char* bar[][3] = { NULL };
func( bar );
}
};
Теперь я хочу сделать bar переменной-членом, но, поскольку первое измерение не имеет размера, я не могу. Я также не могу передать const char** bar[3]
void func( const char* param[][3] )
. Есть ли обходной путь, о котором я не знаю, или это ситуация, когда я должен использовать метод static
?
Редактировать в ответ на Jarod42
Сопоставление инициализации bar
- моя проблема здесь. Я думаю, что я должен, по крайней мере, сделать это в теле ctor, если не в списке инициализации ctor. Вот некоторый тестовый код:
static const char* global[][3] = { NULL };
void isLocal( const char* test[][3] )
{
// This method outputs" cool\ncool\nuncool\n
if( test == NULL )
{
cout << "uncool" << endl;
}
else if( *test[0] == NULL )
{
cout << "cool" << endl;
}
}
class parent
{
public:
virtual void foo( void ) = 0;
};
parent* babyMaker( void )
{
class child : public parent
{
public:
virtual void foo( void )
{
static const char* local[][3] = { NULL };
isLocal( local );
isLocal( global );
isLocal( national );
}
child():national( nullptr ){}
private:
const char* (*national)[3];
};
return new child;
}
int main( void )
{
parent* first = babyMaker();
first->foo();
}