| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 450 人关注过本帖
标题:将结构执政传递给函数,编译出现错误
只看楼主 加入收藏
ClarenceC
Rank: 2
等 级:论坛游民
帖 子:54
专家分:18
注 册:2014-1-10
结帖率:87.5%
收藏
已结贴  问题点数:20 回复次数:8 
将结构执政传递给函数,编译出现错误
#include <iostream>
using namespace std;
struct travel_time
{
    int hours;
    int mins;
};
const int MINS_PER_HOUR = 60;
travel_time sum(travel_time, travel_time);
void show_time(travel_time);
int main()
{
    //两天旅游分别所用的时间
    travel_time day1 = { 4, 54 };
    travel_time day2 = { 3, 51 };
    travel_time *p1 = &day1;
    travel_time *p2 = &day2;
    //将两天时间求和
    travel_time day1_day2_total = sum(p1, p2);
    travel_time *p = &day1_day2_total;
    //输出总时间
    show_time(p);
    return 0;
}
travel_time sum(const travel_time *day1, const travel_time *day2)
{
    travel_time sum;
    sum.mins = (day1->mins + day2->mins) % MINS_PER_HOUR;
    sum.hours = (day1->hours + day2->hours) + (day1->mins + day2->mins) / MINS_PER_HOUR;
    return sum;
}
void show_time(const travel_time *total)//将结构的地址传递给函数
{
    cout << "you have used " << total->hours << " hours and " << total->mins << " minutes among this trip." << endl;//使用箭头操作符
}
   出现错误:错误    1    error C2664: “travel_time sum(travel_time,travel_time)”: 无法将参数 1 从“travel_time *”转换为“travel_time”
   请提点一下哪里没考虑好导致出现了问题。
搜索更多相关主题的帖子: include 
2014-10-04 16:06
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:20 
travel_time sum(travel_time, travel_time);
void show_time(travel_time);

travel_time sum(const travel_time *day1, const travel_time *day2)
void show_time(const travel_time *total)//将结构的地址传递给函数

这两个应该一致 差一点都不行
2014-10-04 16:17
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
travel_time sum(const travel_time *, const travel_time *);
void show_time(const travel_time *);


我最开始没加const 编译不报错 链接报错了 所以必须一点不差

2014-10-04 16:18
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
多说一句 如果这里用C++的引用 程序会简单很多
2014-10-04 16:20
ClarenceC
Rank: 2
等 级:论坛游民
帖 子:54
专家分:18
注 册:2014-1-10
收藏
得分:0 
嗯,谢谢您。
2014-10-04 16:22
ClarenceC
Rank: 2
等 级:论坛游民
帖 子:54
专家分:18
注 册:2014-1-10
收藏
得分:0 
回复 4 楼 zklhp
谢谢。
2014-10-04 16:23
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
程序代码:
#include <iostream>

using std::cout;
using std::endl;

struct travel_time
{
    int hours;
    int mins;
};

const int MINS_PER_HOUR = 60;

void sum(const travel_time &, const travel_time &, travel_time &);
void show_time(const travel_time &);

int main(void)
{
    //两天旅游分别所用的时间
    travel_time day1 = {4, 54};
    travel_time day2 = {3, 51};
    travel_time day1_day2_total {0, 0};
    //将两天时间求和
    sum(day1, day2, day1_day2_total);
    //输出总时间
    show_time(day1_day2_total);

    return 0;
}

void sum(const travel_time &day1, const travel_time &day2, travel_time &total)
{
    total.mins = (day1.mins + day2.mins) % MINS_PER_HOUR;
    total.hours = (day1.hours + day2.hours) + (day1.mins + day2.mins) / MINS_PER_HOUR;
}

void show_time(const travel_time &total)
{
    cout << "you have used " << total.hours << " hours and ";
    cout << total.mins << " minutes among this trip." << endl;
}


用指针 是C语言的实现方式 用引用 是C++的实现方式 既然是C++ 就要尽量多用C++的特性
2014-10-04 16:29
stop1204
Rank: 9Rank: 9Rank: 9
来 自:福建省
等 级:贵宾
威 望:22
帖 子:295
专家分:1151
注 册:2013-9-8
收藏
得分:0 
你那个  一个是指针一个是普通的传递

hl928452957@gmail点com

2014-10-04 17:58
ClarenceC
Rank: 2
等 级:论坛游民
帖 子:54
专家分:18
注 册:2014-1-10
收藏
得分:0 
谢谢
2014-10-05 16:09
快速回复:将结构执政传递给函数,编译出现错误
数据加载中...
 
   



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

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