C++ 在重载函数中使用 "base" 函数
C++ using a "base" function inside an overload function
我在编码时遇到了一个问题。
我使用投影 2D-Space(即 2D 点 (x,y) 和 3D 点 (x,y,w))。
我还有一个接受投影点(3D)的功能。
为了更好地阅读并避免在 main 中强制转换,我尝试为该函数编写一个重载,该函数接受 2D 点并调用 "base" 函数(简单示例)。
但是编译器不编译代码。似乎有一个 link 错误 (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:您的 class 名称(2D_pt
和 3D_pt
)以数字开头,而 C++ 中的标识符不应该这样做(Cplusplus.com)。
#2: 函数 foo
没有 return 类型。
#3:foo(2D_pt)
中缺少 {
。
修复后,一切正常构建:ideone。
我在编码时遇到了一个问题。
我使用投影 2D-Space(即 2D 点 (x,y) 和 3D 点 (x,y,w))。 我还有一个接受投影点(3D)的功能。 为了更好地阅读并避免在 main 中强制转换,我尝试为该函数编写一个重载,该函数接受 2D 点并调用 "base" 函数(简单示例)。 但是编译器不编译代码。似乎有一个 link 错误 (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:您的 class 名称(2D_pt
和 3D_pt
)以数字开头,而 C++ 中的标识符不应该这样做(Cplusplus.com)。
#2: 函数 foo
没有 return 类型。
#3:foo(2D_pt)
中缺少 {
。
修复后,一切正常构建:ideone。