我有两种不同的结构。第一个是astm,它从.txt文件中读取数据,第二个是rebar,它使用structure one中的值读取用户输入并进行计算。Sturct astm将充当菜单。我的问题是,如何将值从struct astm传递到struct rebar?
下面是两个结构:
typedef struct
{
int size;
double weight;
double diameter;
} astm;
typedef struct
{
int size;// user input from astm.size
double length; // user input
} rebar;以下是直径文件(实际文件不包含"sz“、"wt”或“.txt”):
sz wt diameter
2 0.167 0.250
3 0.376 0.375
4 0.668 0.500
5 1.043 0.625
6 1.502 0.750
7 2.044 0.875
8 2.670 1.000
9 3.400 1.128
10 4.303 1.27
11 5.313 1.41
14 7.65 1.693
18 13.6 2.257示例:选择一个大小:4恩特长度: 500
尺寸:4直径: 0.500总重量=长度*重量= 3340.0
发布于 2011-06-24 02:40:26
回答你的问题:
astm myAstm;
myAstm.size = 5;
myAstm.weight = 30.0;
myAstm.diameter = 10;
rebar myRebar;
myRebar.size = myAstm.size;
myRebar.length = someCalculation(...)然而,更好的方法是允许一个嵌入到另一个中:
typedef struct
{
int size;
double weight;
double diameter;
} astm;
typedef struct
{
astm *myAstm;
double length; // user input
} rebar;这样做会减少冗余数据,并允许您传递一个表示所有内容的结构。
astm myAstm;
myAstm.size = 5;
myAstm.weight = 30.0;
myAstm.diameter = 10;
rebar myRebar;
myRebar.myAstm = &myAstm;
myRebar.length = someCalculation(...)
// To get at the size attribute:
printf("size is %d\n", myRebar.myAstm->size);发布于 2011-06-24 02:38:51
你可以重载赋值操作符。
但是要小心,操作符重载并不总是最好的方法。
也许,转换函数或成员函数是更好的选择。
发布于 2011-06-24 02:41:30
重载赋值运算符是一种可能的方法,但并不是很多人不喜欢这样。您也可以将它们直接传递给成员变量。
objRebar.size = objastm.size;或者,您可以将这些转换为类并添加一个成员函数来为您处理它。你有必要使用结构吗?
https://stackoverflow.com/questions/6458983
复制相似问题