You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中如何编写验证构造函数传入vector的assert断言语句?

解决assert比较vector时的参数错误问题

问题出在assert是预处理器宏,它会把逗号当成参数分隔符。你写的assert(u->getFriends() == vector<size_t> {0, 1, 2})里,初始化列表的逗号会被宏解析成多个参数,导致报错。

有两种简单的解决方法:

方法1:给整个比较表达式加括号

把整个判断表达式用括号包裹,让预处理器把括号内的内容当成单个参数:

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

方法2:提前定义预期的vector变量

先把预期的好友列表存入一个变量,再在assert中比较,避免表达式里出现逗号:

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

两种方法都能解决参数数量错误的问题,第二种还能让代码更清晰,尤其是预期列表较长的时候。

内容的提问来源于stack exchange,提问作者Hayoung Ryow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 01:13:17