如何解决C ++结构初始化断言失败
|#include <cassert>
#include <string>
struct AStruct
{
int x;
char* y;
int z;
};
int main()
{
AStruct structu = {4,\"Hello World\"};
assert(structu.z == ???);
}
我应该写什么代替write1来拥有成功的断言?
我用了assert(structu.z == 0);
,但不幸的是得到了错误
int main(): Assertion \'structu.z == 0 failed.Aborted\'
解决方法
你要:
assert(structu.z == 0);
您的代码将分配给z成员,而不是对其进行测试。而且,如果您确实收到了您所编辑的问题说的信息,则说明编译器已损坏。哪一个?
, assert(structu.z == 0)
应该起作用,因为将对成员z
进行值初始化。
, 通过“成功”,我假设您的意思是不会创建错误消息的人。您可能想要:
assert(structu.z == 0);
请注意,我使用的是==
,而不是=
。
该断言永远不会触发,因为使用给定的代码,可以保证ѭ10to等于0
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。