返回值的函数是
float calcVelocity(float xacceleration, float yacceleration,sf::Clock clock, float originalDistance){
sf::Time time = clock.getElapsedTime(); //get current time and store in variable called time
float xvelocity = xacceleration*time.asSeconds();
float yvelocity = yacceleration*time.asSeconds();
while (!(originalDistance + calcDisplacement(yacceleration, clock, originalDistance) <= 0)) {
time = clock.getElapsedTime(); //get current time and store in variable called time
xvelocity = xacceleration*time.asSeconds();//Calculates velocity from acceleration and time
yvelocity = yacceleration*time.asSeconds();
cout << xvelocity<<endl;//print velocity
cout << yvelocity << endl;
system("cls");//clear console
}
return xvelocity;
return yvelocity;
}
然后我希望它们在while循环完成后打印为finalXvelocity = blah和finalYvelocity = blah。在主代码中,当我调用函数并输出结果时,它会将两个值一起打印。例如,finalXvelocity = blahblah。
我在想我可以将返回的值分离到主代码中,然后使用这些值进行打印,但我不知道该怎么做。
由于
答案 0 :(得分:5)
使用struct
:
struct velocity
{
float x_component; /*ToDo - do you really need a float*/
float y_component;
};
这将是最具扩展性的选择。您可以扩展以提供构造函数和其他细节,例如计算 speed 。也许class
更自然,默认情况下数据成员为private
。
答案 1 :(得分:4)
如果您有多个返回值,那么从C ++ 11开始,您可以将它们作为std :: tuple返回。无需显式声明数据结构。
e.g。
tuple<float,float> calcVelocity(/*parameters*/) {
// your code
return make_tuple(xvelocity,yvelocity);
}
在函数外部,您可以通过以下方式访问值:
tuple mytuple = calcVelocity(/*parameters*/);
float xvelocity = get<0>(my_tuple);
float yvelocity = get<1>(my_tuple);
对于pre-C ++ 11,std :: pair也只是2个值的选项。但在这种情况下,struct解决方案更明确。