объявление указателя const char в структуре

Я пытаюсь сделать это, но мой компилятор не позволит мне:

    struct {
const char* string = "some text";
} myAnonymousStruct;

Я полагаю, это потому, что никакие присваивания не могут быть сделаны в объявлении структуры — они должны быть сделаны в функциях или иным образом. Но я действительно даже не позволил назначить const char* переменные?
Если кто-нибудь может дать мне знать, что мне не хватает, я буду очень признателен. Спасибо

2

Решение

Члены структуры не могут быть инициализированы по умолчанию, они должны быть инициализированы после создания структуры экземпляра. Так как, в вашем примере, myAnonymousStruct является экземпляром безымянной структуры, имеет смысл сделать следующее:

struct {
const char* string;
} myAnonymousStruct = { "some text" };

Большинство людей, которые ищут такое поведение, пытаются установить значения по умолчанию для многих экземпляров структуры. Если это в конечном итоге ваше желаемое использование, вы можете подумать о том, чтобы дать своей структуре конструктор и вместо нее инициализировать члены.

В следующем примере foo а также bar являются различными структурами, оба с членом, инициализированным "some text",

struct MyStruct {
const char* str;
MyStruct() { str = "some text"; }
};

MyStruct foo;
MyStruct bar;

Хотя в этом случае я обычно использую класс вместо этого.

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]