簡體   English   中英

C++ 結構初始化斷言失敗

[英]C++ struct initialization assertion fails

#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'

你要:

 assert(structu.z == 0);

您的代碼分配給 z 成員而不是對其進行測試。 如果您確實收到了您編輯的問題所說的消息,那么您的編譯器就壞了。 哪一個?

通過“成功”,我假設您的意思是不會創建錯誤消息的。 你可能想要:

assert(structu.z == 0);

請注意,我使用的是== ,而不是=

這個斷言不應該觸發,因為給出的代碼, structu.z保證等於0

assert(structu.z == 0)應該可以工作,因為成員z將被初始化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM