C ++在重载函数中使用“基本”函数

时间:2016-08-01 06:46:55

标签: c++ overloading

编码时我遇到了一个问题。

我使用投影2D空间(即2D点(x,y)和3D点(x,y,w))。 我还有一个接受投射点(3D)的功能。 为了更好地阅读并避免在主体中进行转换,我尝试为该函数编写一个重载,接收2D-Point并调用“base”函数(简单示例)。 但编译器不编译代码。似乎存在链接错误(LNK 2001)。

//"base" function
foo(3D_pt pt)
{
      //do something with it
}

//overloaded function
foo(2D_pt pt)
     3D_pt pt3 = 3D_pt(pt.x, pt.y, 1);
     foo(pt3);
}

任何想法如何去做?

由于

编辑: 错误是: LNK2001: 未解决的符号 - foo(2D_pt pt)

1 个答案:

答案 0 :(得分:3)

发布的代码中唯一的问题是:

#1:您的类名(2D_pt3D_pt)以数字开头,而C ++中的标识符不应该这样做(Cplusplus.com)。

#2:函数foo没有返回类型。

#3:{中缺少foo(2D_pt)

修复后,所有内容都没有问题:ideone