| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 377 人关注过本帖
标题:求教类的成员函数传值的方式
只看楼主 加入收藏
hsnr
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2010-4-4
结帖率:90.32%
收藏
已结贴  问题点数:3 回复次数:2 
求教类的成员函数传值的方式
    有个程序片段,其调用程序为:
      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();中它把什么值传递出来呢?可能有几种传值的方式呢?请高手提点。
搜索更多相关主题的帖子: double 
2012-03-10 10:51
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:1 
方法有很多,举个例子:比如我写一个函数,它接收两个整形参数,返回这两个数的“和”和这两个数的“积”:
程序代码:
#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;
}





My life is brilliant
2012-03-10 15:29
BianChengNan
Rank: 8Rank: 8
等 级:贵宾
威 望:13
帖 子:302
专家分:972
注 册:2011-11-30
收藏
得分:1 
不明白楼主是啥意思啊

我的群:149544757 C/C++/Assembly 喜欢交流的朋友进,进群请写消息
2012-03-12 12:22
快速回复:求教类的成员函数传值的方式
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034218 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved