我对C ++不是新手,我对变量参数传递有一个疑问。正如我在下面的示例代码中提到的那样(这段代码根本不起作用,只是为了解其他人对我的问题的理解,我这样构建它),我有两个函数func,带有1个参数和2个参数(参数重载)。我从main调用func,之前我正在检查是否需要调用2参数或1参数。这是问题,因为我知道我可以在相应的if ifif语句中调用两个函数,但我很想知道我是否只能管理一个函数。 (在下面的代码中,我传递的字符串不是int,正如我之前提到的,这只是为了其他人理解目的。
#include<iostream.h>
#include <string>
void func(int, int);
void func(int);
void main()
{
int a, b,in;
cout << "Enter the 2 for 2 arg, 1 for 1 arg\n";
cin << in;
if ( in == 2)
{
string pass = "a,b";
}
elseif ( in == 1)
{
string pass = "a";
}
else
{
return 0;
}
func(pass);
cout<<"In main\n"<<endl;
}
void func(int iNum1)
{
cout<<"In func1 "<<iNum1<<endl;
}
void func(int iNum1, int iNum2)
{
cout<<"In func2 "<<iNum1<<" "<<iNum2<<endl;
}
答案 0 :(得分:4)
您可以使用Ronald解释的stdarg方法。或者你可以使用一个带参数向量的函数。首先将参数推送到向量,然后调用func:
func(const vector<int>& argv) {
for (vector<int>::const_iterator iter = argv.begin(); iter != argv.end(); ++iter) {
// Get the arguments
}
// Do what you want ...
}
答案 1 :(得分:1)
我相信您可能对查看stdarg库感兴趣。示例用法如下,
#include <cstdarg>
#include <iostream>
using namespace::std;
void func(int, ...);
int main(void) {
func(1, 10);
func(2, 20, 30);
return 0;
}
void func(int num_args, ...) {
va_list ap;
va_start(ap,num_args);
for(size_t loop=0;loop<num_args;++loop) {
if(loop>0) cout << " ";
cout << va_arg(ap,int);
}
va_end(ap);
cout << endl;
}