如何在 C++ 中为向量编写断言语句?

问题描述 投票:0回答:1

我正在创建一个用户类,其中包含 ID、姓名、出生年份、邮政编码和朋友列表。 我想验证朋友的列表(即向量std::size_t)是否通过使用断言语句正确传递到我的构造函数中,但我想知道是否可以编写像

assert(u->getFriends() == vector<size_t> {0, 1, 2})
这样的断言语句对于上下文,getFriends () 是一个 getter 函数,用于获取用户好友列表中 size_t 个元素的向量。

我尝试了上面的代码行,但收到此错误消息:宏“assert”传递了 3 个参数,但只需要 1 个。我想知道如何编写一个断言语句来查找用户的向量是否朋友的名单是正确的。

c++ vector assert
1个回答
0
投票

Assert 是一个宏:

// https://en.cppreference.com/w/cpp/error/assert
#ifdef NDEBUG
#  define assert(condition) ((void)0)
#else
#  define assert(condition) /*implementation defined*/
#endif

但是当参数带有逗号时,带有参数的宏就会出现问题。 因此,将其传递给宏的方法是将其包含在另一对括号内:

assert((u->getFriends() == vector<size_t> {0, 1, 2}));

这是一个可运行的示例:https://onlinegdb.com/wUg-aa27T

© www.soinside.com 2019 - 2024. All rights reserved.