注册 登录
编程论坛 C++教室

C++模板实例化问题

代号215 发布于 2013-11-08 21:50, 527 次点击
程序代码:

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又不是一个函数模板 他为什么会出现两个实例?




5 回复
#2
代号2152013-11-08 21:51
求指点  
#3
rjsp2013-11-09 08:25
不懂,但你一定是代码抄错漏了
比如 test1函数声明时没有参数,但你在test2中调用test1时却给了参数
比如 你只定义了ScopeRules,没有定义ScopeRuleS,但在main函数中却使用了ScopeRuleS
……

我怀疑你少写了一句 extern int foo(int);
#4
rjsp2013-11-09 08:41
Google了一下
http://m.blog.
然后见 “Template中的名称决议方式 Name Resolution within a Template”
#5
sh3166301032013-11-09 20:51
#6
pauljames2013-11-13 21:26
找下函数模板的定义吧
1