- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在编写一个 Point
类(在 3d 空间中)并且一直想知道创建原点的最佳方法是什么。这是基本类(取自 Andy 的示例,以防万一有人想知道基本实现是什么):
struct Point
{
constexpr Point(double x_, double y_, double z_) : x(x_), y(y_), z(z_) { }
double x;
double y;
double z;
};
获得原点的第一种方法是定义一个 constexpr
变量:
constexpr Point origin = { 0.0, 0.0, 0.0 };
第二个是定义一个新类型和重载算法,如果它们在使用原点计算时可以从优化中受益(假设我为 Point
编写了一个 constexpr
构造函数) :
struct Origin: public Point
{
constexpr Origin():
Point(0.0, 0.0, 0.0)
{}
};
constexpr Origin origin;
虽然第一种方法看起来更简单且不易出错,但我想知道第二种方法是否是个好主意,它是否有一些我没有发现的缺陷。
编辑: 想到引用库,我注意到 CGAL 使用了类似的东西:
class Origin {};
const Origin ORIGIN;
最佳答案
While the first method seems simpler and less error-prone, I would like to know whether the second one looks like a good idea and whether it has some pitfalls I did not see.
我认为基于继承的设计在概念上是有缺陷的:你不想在这里引入一个新的类型,而起源在概念上是一个实例(一个非常特殊的实例,但仍然是一个实例) Point
类的,不是该类型的特化。
我宁愿在此处添加一个名为 origin()
的静态 constexpr
成员函数:
struct Point
{
constexpr Point(double x_, double y_, double z_) : x(x_), y(y_), z(z_) { }
constexpr static Point origin() { return {0, 0, 0}; }
double x;
double y;
double z;
};
然后你可以这样使用它:
int main()
{
constexpr Point o = Point::origin();
}
或者,您可以添加一个名为 origin
的 Point
类型的静态数据成员,而不是拥有一个名为 origin()
的静态函数。选择哪一个主要是品味问题。
关于c++ - 起源 - 不变的还是新的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16521458/
我正在编写一个 Point 类(在 3d 空间中)并且一直想知道创建原点的最佳方法是什么。这是基本类(取自 Andy 的示例,以防万一有人想知道基本实现是什么): struct Point {
所以我遇到了 MY: WARNING cannot transform class XYZ java.lang.RuntimeException: Method code too large!
我有一个在 Glassfish 下运行的 Java EE 应用程序。 经过最近的一些更改,我们开始在日志中看到大量语句: [#|2011-12-16T11:20:27.007-0800|INFO|su
使用UncaughtErrorEvent.UNCAUGHT_ERROR时是否可以获得错误和错误事件的目标/起源? 我正在使用复杂的Flash应用程序记录用户的运行时错误,并想知道哪里出现了问题。 Un
既然除了窗口大小之外什么都没有变化,我的程序需要一个完整的核心来在最大化的窗口上渲染场景是否正常? 我在 Windows 上使用 C++ 语言的 Qt 4.7 绘制 150 张尺寸为 1754*124
我正在尝试让我的 Chrome 扩展程序将文件上传到 Google 云端硬盘,但我在授权时遇到了困难。我一直在研究 here 中的代码和说明,但我不知道在开发者控制台中为“Authorized Jav
我在通过 webhook 与 GitHub 连接的服务器上运行 Jenkins。不幸的是,我的构建偶尔会失败,我不知道为什么。有时重新启动 Jenkins ( sudo service jenkins
我在使用 Atmosphere 框架 (https://github.com/Atmosphere/atmosphere) 构建的网络应用程序中启用 CORS 时遇到问题 我的请求类似于: /**
我正在使用 AngularJS 开发一个 Web 应用程序。它包含一个管理界面,该界面依赖于另一个域上的 json-rpc API。 在我的本地环境中,如果我向 API 服务器发出请求(使用 Angu
我正在开发一个同时使用 REST 端点和 SockJS websocket 的服务器应用程序。这曾经在 Spring 5.2 及更低版本下工作正常。 然而,从 5.3 版本开始 ,以下方法存在于org
我刚刚开始使用 angularjs,并且使用 Rails 作为后端 api。我已经成功设置了 Angular rails 资源( https://github.com/FineLinePrototyp
我是 React js 的新手,我正在尝试根据用户输入简单地动态更改 map 但是对于特定位置的搜索请求,此错误会增加 XMLHttpRequest cannot load https://maps.
我对一个我想到的项目做了一些测试,其中涉及使用附近的地方。所以我和大佬一起开始摆弄 Google 的 Places Api。我在我的 map 上使用带有 openstreet 瓷砖的传单。现在一切都很
我是一名优秀的程序员,十分优秀!