Я пытаюсь сделать это, но мой компилятор не позволит мне:
struct {
const char* string = "some text";
} myAnonymousStruct;
Я полагаю, это потому, что никакие присваивания не могут быть сделаны в объявлении структуры — они должны быть сделаны в функциях или иным образом. Но я действительно даже не позволил назначить const char*
переменные?
Если кто-нибудь может дать мне знать, что мне не хватает, я буду очень признателен. Спасибо
Члены структуры не могут быть инициализированы по умолчанию, они должны быть инициализированы после создания структуры экземпляра. Так как, в вашем примере, 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;
Хотя в этом случае я обычно использую класс вместо этого.
Других решений пока нет …