注册 登录
编程论坛 C++教室

求教类的成员函数传值的方式

hsnr 发布于 2012-03-10 10:51, 377 次点击
    有个程序片段,其调用程序为:
      Elas3DT4 eq(theElement);
      eq.Deviator();
其中Elas3DT4是类,eq是对象,Deviator是类的成员,这个成语函数的定义为:
void Elas3DT4::Deviator(double coef)
{
   double c1=_G*_det*coef, c2=2*c1;
   for (size_t j=1; j<=4; j++) {
      double db11 = c2*_dSh(j).x;
      double db22 = c2*_dSh(j).y;
      double db33 = c2*_dSh(j).z;
      double db42 = c1*_dSh(j).z;
      double db43 = c1*_dSh(j).y;
      double db53 = c1*_dSh(j).x;
      for (size_t i=1; i<=4; i++) {
         eMat(3*i-2,3*j-2) += _dSh(i).x*db11 + _dSh(i).z*db42 + _dSh(i).y*db43;
         eMat(3*i-2,3*j-1) += _dSh(i).y*db53;
         eMat(3*i-2,3*j  ) += _dSh(i).z*db53;
         eMat(3*i-1,3*j-2) += _dSh(i).x*db43;
         eMat(3*i-1,3*j-1) += _dSh(i).y*db22 + _dSh(i).z*db42 + _dSh(i).x*db53;
         eMat(3*i-1,3*j  ) += _dSh(i).z*db43;
         eMat(3*i  ,3*j-2) += _dSh(i).x*db42;
         eMat(3*i  ,3*j-1) += _dSh(i).y*db42;
         eMat(3*i  ,3*j  ) += _dSh(i).z*db33 + _dSh(i).y*db43 + _dSh(i).x*db53;
      }
   }
}
    现在问题来了,由于这个成语函数是void类型,也就是没有返回值的,哪在调用语句eq.Deviator();中它把什么值传递出来呢?可能有几种传值的方式呢?请高手提点。
2 回复
#2
lz10919149992012-03-10 15:29
方法有很多,举个例子:比如我写一个函数,它接收两个整形参数,返回这两个数的“和”和这两个数的“积”:
程序代码:
#include <iostream>
using namespace std;

class Result {
public:
    Result(int s, int p) : sum(s), pdt(p) {}
    int getSum() const { return sum; }
    int getProduct() const { return product; }
private:
    int sum;
    int pdt;
};

const Result f(int a, int b) {
    return Result(a + b, a * b);
}

int main() {
    int a = 2, b = 3;
    Result r = f(a, b);
    cout << "The sum of a & b is: " << r.getSum() << endl;
    cout << "The product of a & b is: " << r.getProduct() << endl;
}

或者:
程序代码:
#include <iostream>
using namespace std;

void f(int a, int b, int& sum, int& pdt) {
    sum = a + b;
    pdt = a * b;
}

int main() {
    int a = 2, b = 3, sum, product;
    f(a, b, sum, product);
    cout << "The sum of a & b is: " << sum << endl;
    cout << "The product of a & b is: " << product << endl;
}




#3
BianChengNan2012-03-12 12:22
不明白楼主是啥意思啊
1