标题:C++模板实例化问题
只看楼主
代号215
Rank: 2
等 级:论坛游民
帖 子:40
专家分:80
注 册:2012-11-22
结帖率:83.33%
已结贴  问题点数:50 回复次数:5 
C++模板实例化问题
程序代码:
extern double foo(double);
template<class TYPE>
class ScopeRules {
public:
    void test1() {
        _member=foo(_val);
    }

    TYPE test2() {
        return test1(_member);
    }

private:
    int _val;
    TYPE _member;
};

ScopeRuleS<int>  s;
s.test1();

书中解释说在这里 程序中有两个函数实例


extern double foo(double);
extern int foo(int);


我的问题:
1.foo的参数是double 传int没有问题 但是这么返回类型也变成int了?
2.foo又不是一个函数模板 他为什么会出现两个实例?




搜索更多相关主题的帖子: member 
2013-11-08 21:50
代号215
Rank: 2
等 级:论坛游民
帖 子:40
专家分:80
注 册:2012-11-22
得分:0 
求指点  

好久没把牛皮吹的这么清新脱俗了
2013-11-08 21:51
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:17 
不懂,但你一定是代码抄错漏了
比如 test1函数声明时没有参数,但你在test2中调用test1时却给了参数
比如 你只定义了ScopeRules,没有定义ScopeRuleS,但在main函数中却使用了ScopeRuleS
……

我怀疑你少写了一句 extern int foo(int);
2013-11-09 08:25
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
Google了一下
http://m.blog.
然后见 “Template中的名称决议方式 Name Resolution within a Template”
2013-11-09 08:41
sh316630103
Rank: 2
等 级:论坛游民
帖 子:10
专家分:23
注 册:2013-11-9
得分:17 
2013-11-09 20:51
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
得分:17 
找下函数模板的定义吧

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2013-11-13 21:26



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-423259-1-1.html




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

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