【发布时间】:2019-03-21 10:32:05
【问题描述】:
我有一个函数,比如:
void foo(int checkInt, vector<int> vect, int x) {
EXECx = x;
EXECcheckInt = checkInt;
if (EXECcheckInt > 0) {
//do something to vect
} else {
Timer.rset();
}
}
可以看出,除非checkInt 大于0,否则vect 会被单独留下。所以,如果我想通过checkInt 0,那么我似乎不必担心vect。
因此,在我看来,我需要一些虚拟值来为vect 输入这个函数,那么什么值可以工作,或者我需要传递一个虚拟向量?我的想法是通过 0,但我猜那是行不通的。
我尝试将它转换为foo(0,(vector<int>)0,0),但令我惊讶的是,当我尝试打印出vect 时,它只是显示为空(其中没有0),函数编写如下:
void foo(int checkInt, vector<int> vect, int x) {
for (auto i = vect.begin(); i != vect.end(); ++i)
std::cout << *i << ' ';
}
我该怎么办?
我正在使用 C++98。
【问题讨论】:
-
听起来你需要两个独立的函数
-
什么是“做点什么”?修改vect?
-
@Jabberwocky 我试图复制的函数(它在另一种语言中)将 vect 的内容复制到另一个向量 - 这是“对 vect 做一些事情”
-
(vector<int>)0实际上解析为static_cast,这只是调用constructor #2 here 的一种奇怪方式,其参数是所需的大小。 -
也许如果你改变你的函数签名为 void foo(int, vecto
*, int x) 你可以传递 NULL 作为向量参数。