C++ 符号处理和导出 => 允许代码重复?

标签 c++ code-duplication

在我们的项目中,我们有这样的东西:

struct PointI
{
  // methods for getting, setting and calculating some point stuff
private:
  int x;
  int y;
};

struct PointD
{
  // methods for getting, setting and calculating some point stuff
private:
  double x;
  double y;
};

我建议把它改成这样:

template<typename T>
struct Point
{
  // methods for gettig, setting and calculating some point stuff
private:
  T x;
  T y;
};

typedef Point<int> PointI;
typedef Point<double> PointD;
typedef Point<float> PointF;

但这被拒绝了,我被告知:“这种方法存在一个问题——C++ 符号处理和导出。在导出符号(使用它们的 API)中使用模板时,模板太长了,而且没有办法导出模板。”

这个论点是否强大到允许大量代码重复?

最佳答案

您的老板(或其他人)可能是对的。如果您编写的库应该可以从 C++ 以外的其他语言使用,那么只用 C 编写接口(interface)通常是个好主意。

当然,你仍然可以在内部使用模板,只是不要暴露它们。

关于C++ 符号处理和导出 => 允许代码重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4352903/

相关文章:

c++ - 有关调试复制和粘贴到 PowerPoint 2010 的提示

Java 枚举 : implementing common methods, 避免重复

c++ - 将仅 1 行代码不同的两个函数分组

c# - 是否有比 C# Action 委托(delegate)更有效的方法来避免这种代码重复?

c++ - 编译器错误或非标准代码? - lambda 中的可变参数模板捕获

c++ - 在 Windows Mobile 上监控存储空间

c++ - 由于右值引用,C++0x 中的 std::swap 是原子的吗?

c# - n 个列表的字符串的组合

java - 有没有办法缩短由于对象属性相似而重复的代码?

javascript - 在 ExtJS6 中创建电子邮件字段组件