Я также столкнулся с проблемой с игнорированием более крупных границ, которые я установил, когда печать документа в формате PDF через проявляет. Я был успешен для решения проблемы при помощи ghostview и принтера, установленного непосредственно на моем ПК. (К сожалению, ghostview не работал правильно, когда я попробовал печать на удаленном принтере, подключенном с ПК через сеть.)
Этот код компилируется:
struct X {
static const char* enumtext[];
};
const char* X::enumtext[] = { "A", "B", "C" };
Проверьте свой код и найдите отличия. Я могу только думать, что вы не определили статический атрибут в классе,
Это компилируется с gcc версии 4.0.1:
#include <iostream>
class MyClass {
public:
const static char* enumText[];
};
const char* MyClass::enumText[] = { "a", "b", "c" };
int main()
{
std::cout << MyClass::enumText[0] << std::endl;
}
Скомпилировано с:
g++ -Wall -Wextra -pedantic s.cc -o s
Вы уверены, что MyClass :: enumText
ссылается на правильный класс ?
Учитывая сообщение об ошибке, мне кажется, что у вас есть объявление MyClass
где-нибудь (возможно, в другом заголовке?), В котором не объявлен enumText [].
Как говорит компилятор, вы пытаетесь определить статический член MyClass
, который будет массивом const char *
с именем enumText
. Если у вас нет его объявления в классе, тогда возникает проблема.
У вас должно быть:
class MyClass
{
//blah
static const char* enumText[];
};
или, может быть, вам не нужен статический член. Если нет, вам не нужно использовать класс в имени.
В любом случае, это не имеет ничего общего с инициализацией массива.
Следующий код отлично компилируется для меня в VS 2005:
class MyClass
{
const static char* MyClass::enumText[];
};
const char* MyClass::enumText[] = { "A", "B", "C", "D", "E" };
Если бы мне пришлось сделать безумное предположение, я бы сказал, что ваша строка инициализации находится в отдельном исходном файле, и вы забыли # включить файл .h, содержащий MyClass. Это именно то, что я делаю постоянно.
Кроме того, мне кажется весьма вероятным, что у вас const не в том месте (или их недостаточно). В нынешнем виде это не массив, который является постоянным, или указатели в массиве; только элементы символа внутри него.