24小时热门版块排行榜    

查看: 970  |  回复: 5

lixy1217

木虫 (著名写手)

[求助] 求帮忙看一个关于模板友元函数的错误 已有1人参与

对于这样一个简单程序
#include<iostream>
using namespace std;

template < class T >
double func(T&a)
{
        return a.x;
}

class A
{
        private:  double x;
        public:  
                template < class T >
                friend double func(T&a);

                void solve()
                {
                        double s;
                        A a;
                        s=func<A>(a);   ////
                        cout<<s<<endl;
                }
};

void main()
{
        A a;
        a.solve();
}

结果显示了这样的错误:
e:\学习\cpp\测试\test.cpp(21) : error C2440: '=' : cannot convert from 'void' to 'double'
        Expressions of type void cannot be converted to other types

其中21行就是我标有 //// 的那一行。很纳闷,func的申明明明都是以double返回的,可为什么这里貌似却是void型

更加奇怪的是,class A中去掉对于func的友元定义,然后把double x放到public:里面,程序居然又对了,实在没搞懂原因,求高手解答。
回复此楼
偶尔敞开心扉,世界将不再孤独
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

木叶清风

木虫 (正式写手)

第一,x没有初始化;
第二,g++ 4.8.1肯定是能通过的(当然,int main (int argc, char* argv[]))
www.cvdelver.com
2楼2014-01-08 10:34:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lixy1217

木虫 (著名写手)

引用回帖:
2楼: Originally posted by 木叶清风 at 2014-01-08 10:34:09
第一,x没有初始化;
第二,g++ 4.8.1肯定是能通过的(当然,int main (int argc, char* argv[]))

初始化时次要问题,可以补充,我这里只是示范了一下遇到的问题,源程序不是这样的。
g++没用过,暂时不会linux~~不过的VS2008或者VS2010这个程序能通过吗?
偶尔敞开心扉,世界将不再孤独
3楼2014-01-08 11:49:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

锐利的碎片

木虫 (正式写手)

star watcher

【答案】应助回帖

★ ★ ★
感谢参与,应助指数 +1
lixy1217: 金币+3, 有帮助, 应该确实是转换类型的错误 2014-01-10 10:36:56
内容已删除
4楼2014-01-09 10:45:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lixy1217

木虫 (著名写手)

引用回帖:
4楼: Originally posted by 锐利的碎片 at 2014-01-09 10:45:43
实际模板展开时编译器应该不能知道a.x的类型,vc不允许隐含转换,所以转换会出错。
可以在返回时加个static_cast<double>试下。
最好的办法是用c++11的decltype写成这样
template <typename T> auto ...

试过static_cast<double>,还是一样的错误

我的这个破机器连VS2010都安装不了,c++11就更不用想了
偶尔敞开心扉,世界将不再孤独
5楼2014-01-10 10:37:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

锐利的碎片

木虫 (正式写手)

star watcher

【答案】应助回帖

引用回帖:
5楼: Originally posted by lixy1217 at 2014-01-10 10:37:51
试过static_cast<double>,还是一样的错误

我的这个破机器连VS2010都安装不了,c++11就更不用想了...

gcc+codeblocks也可以试试。
6楼2014-01-10 20:23:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 lixy1217 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[公派出国] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +3 C79jjtjAKjEn 2026-09-15 3/150 2026-09-18 03:42 by cITaGg3p5edr
[硕博家园] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +3 mibUvS8DDCwf 2026-09-15 3/150 2026-09-18 03:04 by cITaGg3p5edr
[找工作] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +4 vZfe6xYu34yj 2026-09-14 4/200 2026-09-18 02:28 by cITaGg3p5edr
[硕博家园] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +4 Aj1rhIDL5ixY 2026-09-14 4/200 2026-09-18 01:54 by cITaGg3p5edr
[硕博家园] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +4 40ms4Wlo4umh 2026-09-14 4/200 2026-09-18 01:04 by cITaGg3p5edr
[硕博家园] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +5 s3fFTmArrBt6 2026-09-13 7/350 2026-09-17 23:28 by cuPZTDXS3VOd
[基金申请] 国社科系统bug了,是不是要放榜了? +5 kynobel 2026-09-16 6/300 2026-09-17 21:37 by tosogo
[考博] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +4 5BDX0d0WFp7t 2026-09-15 4/200 2026-09-17 16:29 by 0ngsZVSCTS7z
[考研] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +6 Aj1rhIDL5ixY 2026-09-14 6/300 2026-09-17 14:17 by ObVzqQQh1rrE
[找工作] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +3 23jxep3nCNZb 2026-09-14 3/150 2026-09-17 13:39 by ObVzqQQh1rrE
[找工作] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +5 s3fFTmArrBt6 2026-09-14 6/300 2026-09-17 12:29 by ObVzqQQh1rrE
[找工作] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +8 3n8v2C8RimXI 2026-09-13 8/400 2026-09-17 11:27 by UAIjTRMuUFoj
[找工作] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +4 23jxep3nCNZb 2026-09-14 4/200 2026-09-17 04:04 by k06BKNblrGRH
[找工作] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +6 6F5UbRU2I5hL 2026-09-14 6/300 2026-09-17 03:04 by Tql5LQhh5rLK
[找工作] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +3 s3fFTmArrBt6 2026-09-14 3/150 2026-09-17 02:38 by Tql5LQhh5rLK
[公派出国] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +4 LwdutQ8HoqWP 2026-09-13 7/350 2026-09-17 02:02 by Tql5LQhh5rLK
[考研] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +7 3n8v2C8RimXI 2026-09-13 8/400 2026-09-17 01:38 by Tql5LQhh5rLK
[考研] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +3 vZfe6xYu34yj 2026-09-14 3/150 2026-09-16 22:26 by Tql5LQhh5rLK
[考博] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +5 3n8v2C8RimXI 2026-09-13 5/250 2026-09-16 02:50 by DgNGHc3h5tPl
[找工作] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +7 QUjhNVAcOSff 2026-09-13 8/400 2026-09-16 02:23 by DgNGHc3h5tPl
信息提示
请填处理意见