Утверждение инициализации структуры C ++ терпит неудачу - PullRequest
3 голосов
/ 30 мая 2011
#include <cassert>
#include <string>
struct AStruct 
{ 
    int x; 
    char* y; 
    int z; 
};
int main()
{ 
    AStruct structu = {4, "Hello World"};
    assert(structu.z == ???);
}

Что я должен написать вместо ???, чтобы иметь успешное утверждение?
Я использовал assert(structu.z == 0);, но, к сожалению, получил ошибку
int main(): Assertion 'structu.z == 0 failed.Aborted'

Ответы [ 3 ]

5 голосов
/ 30 мая 2011

Вы хотите:

 assert(structu.z == 0);

Ваш код назначается участнику z вместо его тестирования.И если вы получили сообщение о том, что ответ отредактирован в вашем отредактированном вопросе, ваш компилятор не работает.Какой это?

3 голосов
/ 30 мая 2011

assert(structu.z == 0) должно работать, потому что элемент z будет инициализированным значением.

3 голосов
/ 30 мая 2011

Под "успешным" я предполагаю, что вы подразумеваете, что не создает сообщение об ошибке. Вы, вероятно, хотите:

assert(structu.z == 0);

Обратите внимание, что я использую ==, а не =.

Это утверждение никогда не должно срабатывать, поскольку с указанным кодом structu.z гарантированно будет равно 0.

...