< P>答案是: < P>答案是:./P>< P>你有C++的基本语法错误。代码>类B*类B()不创建任何对象,它声明函数classB的函数原型,该函数原型返回classB*。要创建对象,您应该执行ClassB然后使用b。如果函数引用参数,函数将正确地填充输出变量。 ,你得到了C++的基本语法错误。代码>类B*类B()不创建任何对象,它声明函数classB的函数原型,该函数原型返回classB*。要创建对象,您应该执行ClassB然后使用b。如果函数通过引用获取其参数,则输出变量将由函数正确填充 ClassB *classB(); classB = classB.functionB(in_a,in_b,in_c,ot_a,ot_b,ot_s1);,c++,C++" /> < P>答案是: < P>答案是:./P>< P>你有C++的基本语法错误。代码>类B*类B()不创建任何对象,它声明函数classB的函数原型,该函数原型返回classB*。要创建对象,您应该执行ClassB然后使用b。如果函数引用参数,函数将正确地填充输出变量。 ,你得到了C++的基本语法错误。代码>类B*类B()不创建任何对象,它声明函数classB的函数原型,该函数原型返回classB*。要创建对象,您应该执行ClassB然后使用b。如果函数通过引用获取其参数,则输出变量将由函数正确填充 ClassB *classB(); classB = classB.functionB(in_a,in_b,in_c,ot_a,ot_b,ot_s1);,c++,C++" />

处理具有多个输出参数的函数 我们如何处理C++中的一个以上输出参数。我是C++初学者,目前我正在尝试编写函数A,调用函数的另一个函数B,函数B总共包含6个参数,其中三个是输入参数,其余三个是输出参数。我如何访问函数A中的所有三个输出参数?我尝试以下方法…如果我出错,有人能帮我更正代码吗..请帮助我的朋友 class A ::functionA() { int in_a=1; string in_b= "name"; int in_c=3; int ot_a=0; int ot_b=0; string ot_s1="" ClassB *classB(); classB = classB.functionB(in_a,in_b,in_c,ot_a,ot_b,ot_s1); //is this way correct? ot_a= ? ; ot_b=? ; ot_s1=? } 我可以使用OTHAA= Cabb OTHYA之类的东西吗?请帮助我…< P/> < P>答案是: < P>答案是:./P>< P>你有C++的基本语法错误。代码>类B*类B()不创建任何对象,它声明函数classB的函数原型,该函数原型返回classB*。要创建对象,您应该执行ClassB然后使用b。如果函数引用参数,函数将正确地填充输出变量。 ,你得到了C++的基本语法错误。代码>类B*类B()不创建任何对象,它声明函数classB的函数原型,该函数原型返回classB*。要创建对象,您应该执行ClassB然后使用b。如果函数通过引用获取其参数,则输出变量将由函数正确填充 ClassB *classB(); classB = classB.functionB(in_a,in_b,in_c,ot_a,ot_b,ot_s1);

处理具有多个输出参数的函数 我们如何处理C++中的一个以上输出参数。我是C++初学者,目前我正在尝试编写函数A,调用函数的另一个函数B,函数B总共包含6个参数,其中三个是输入参数,其余三个是输出参数。我如何访问函数A中的所有三个输出参数?我尝试以下方法…如果我出错,有人能帮我更正代码吗..请帮助我的朋友 class A ::functionA() { int in_a=1; string in_b= "name"; int in_c=3; int ot_a=0; int ot_b=0; string ot_s1="" ClassB *classB(); classB = classB.functionB(in_a,in_b,in_c,ot_a,ot_b,ot_s1); //is this way correct? ot_a= ? ; ot_b=? ; ot_s1=? } 我可以使用OTHAA= Cabb OTHYA之类的东西吗?请帮助我…< P/> < P>答案是: < P>答案是:./P>< P>你有C++的基本语法错误。代码>类B*类B()不创建任何对象,它声明函数classB的函数原型,该函数原型返回classB*。要创建对象,您应该执行ClassB然后使用b。如果函数引用参数,函数将正确地填充输出变量。 ,你得到了C++的基本语法错误。代码>类B*类B()不创建任何对象,它声明函数classB的函数原型,该函数原型返回classB*。要创建对象,您应该执行ClassB然后使用b。如果函数通过引用获取其参数,则输出变量将由函数正确填充 ClassB *classB(); classB = classB.functionB(in_a,in_b,in_c,ot_a,ot_b,ot_s1);,c++,C++,通过在classB之后查找操作符,我假设您认为classB是一个对象。不,不是 ClassB *classB(); 上面的语句说-classB()是一个不带参数的函数,返回类型是对classB的引用 通过在classB之后查找操作符,我假设您认为classB是一个对象。不,不是 ClassB *classB(); 上面的语句说-classB()是一个不带参数的函数,返回类型是对classB的引用。对于多个返回值,通常有两种选择: 返回包含返回值的struct 在每个引用中传递返回值 两个

通过在
classB
之后查找
操作符,我假设您认为
classB
是一个对象。不,不是

ClassB *classB();
上面的语句说-
classB()
是一个不带参数的函数,返回类型是对
classB
的引用

通过在
classB
之后查找
操作符,我假设您认为
classB
是一个对象。不,不是

ClassB *classB();

上面的语句说-
classB()
是一个不带参数的函数,返回类型是对
classB

的引用。对于多个返回值,通常有两种选择:

  • 返回包含返回值的
    struct
  • 在每个引用中传递返回值
两个例子都表明:

// first approach, struct return
struct myReturns{
  int int_return;
  float float_return;
};

myReturns MyFunc(int param1, char* param2, ...){
  // do some stuff with the parameters
  myReturns ret;
  ret.int_return = 42;
  ret.float_return = 13.37f;
  return ret;
}

// calling it:
myReturns ret = MyFunc(/*pass your parameters here*/);
int i = ret.int_return;
float f = ret.float_return;

// second approach, out parameters
void MyFunc(int inParam1, char* inParam2, int& outInt, float& outFloat){
  // do some stuff with the parameters
  outInt = 42;
  outFloat = 13.37f;
}

// calling it:
int i;
float f;
MyFunc(/*your parameters here*/,i,f);
// i and f are now changed with the return values

对于多个返回值,通常有两种选择:

  • 返回包含返回值的
    struct
  • 在每个引用中传递返回值
两个例子都表明:

// first approach, struct return
struct myReturns{
  int int_return;
  float float_return;
};

myReturns MyFunc(int param1, char* param2, ...){
  // do some stuff with the parameters
  myReturns ret;
  ret.int_return = 42;
  ret.float_return = 13.37f;
  return ret;
}

// calling it:
myReturns ret = MyFunc(/*pass your parameters here*/);
int i = ret.int_return;
float f = ret.float_return;

// second approach, out parameters
void MyFunc(int inParam1, char* inParam2, int& outInt, float& outFloat){
  // do some stuff with the parameters
  outInt = 42;
  outFloat = 13.37f;
}

// calling it:
int i;
float f;
MyFunc(/*your parameters here*/,i,f);
// i and f are now changed with the return values

如果您可以更改functionB(),则使用指针作为参数。通过这种方式,您可以更改functionB()中的值,它们将直接在functionA()中更改。

如果您可以更改functionB(),则使用指针作为参数。通过这种方式,您可以更改functionB()中的值,它们将直接在functionA()中更改。

正如Xeo在回答中提到的,您可以使用返回结构或引用。 还有另一种可能,使用指针。 指针允许你做一件事:如果你调用的函数可以用来计算多个信息,但是你不需要所有的信息,你可以传递NULL作为指针的值,这样函数就知道它不需要填充这些信息

当然,您调用的函数需要这样设计,它不是自动的

void f()  
{   
    type1* p1 = new type1();  
    type2* p2 = NULL
    g(p1, p2);
}

void g(type1* param1, type2* param2)  
{
    //Do some computation here
    if (param1 != NULL)
    {
        //Do something here to fill param1
    }
    if (param2 != NULL)
    {
        //Do something here to fill param2
    }
}

但作为一般规则,最好在可能的时候使用引用,在必须的时候使用指针。如果函数不处理传递给它的指针为NULL的情况,则会导致崩溃。引用不能为NULL,因此它们可以避免这个问题。

正如Xeo在回答中提到的,您可以使用返回结构或引用。 还有另一种可能,使用指针。 指针允许你做一件事:如果你调用的函数可以用来计算多个信息,但是你不需要所有的信息,你可以传递NULL作为指针的值,这样函数就知道它不需要填充这些信息

当然,您调用的函数需要这样设计,它不是自动的

void f()  
{   
    type1* p1 = new type1();  
    type2* p2 = NULL
    g(p1, p2);
}

void g(type1* param1, type2* param2)  
{
    //Do some computation here
    if (param1 != NULL)
    {
        //Do something here to fill param1
    }
    if (param2 != NULL)
    {
        //Do something here to fill param2
    }
}

但作为一般规则,最好在可能的时候使用引用,在必须的时候使用指针。如果函数不处理传递给它的指针为NULL的情况,则会导致崩溃。引用不能为NULL,因此可以避免此问题。

尝试此操作时发生了什么?它是否正常工作,或者是否向您发送了错误消息?请显示B::functionB的签名,或者您想知道如何编写functionB?如果这是作业,请将作业标记添加到其中。尝试此操作时发生了什么?它工作了吗,还是给了您一条错误消息?请显示B::functionB的签名,或者您想知道如何编写functionB?如果这是家庭作业,请将家庭作业标记添加到其中。@Als-我在帖子的这些行中没有提到任何内容。@Als-我没有给出我的代码。这只是问题中OP的代码,我正在解释它的实际含义。@Als-除了OP创建的不是对象之外,我还能对OP说什么呢。以后会怎样考虑你的建议。谢谢。我的坏消息似乎是我已经被预先占用了,或者我误读了别人的回复是你的……抱歉……继续努力。@Als-我在我的帖子中没有提到这些行中的任何内容。@Als-我没有给出我的代码。这只是问题中OP的代码,我正在解释它的实际含义。@Als-除了OP创建的不是对象之外,我还能对OP说什么呢。以后会怎样考虑你的建议。谢谢。我的坏消息好像我已经被C++占据了,或者我误解了你的回应。道歉。继续做好的工作。嘘,地球人@维克托:我排除了指针,因为OP在C++中看起来并不是很有经验。嘘,地球人!