【发布时间】:2015-04-01 15:13:27
【问题描述】:
我们有几个 C++ 函数将在项目的第 2 阶段实现,它们是公共接口或其各自的类和模块的一部分。因为它们是公共接口的一部分,所以我们认为它们应该存在,至少在头文件中,在阶段 1 中,以便我们在实现其余类时仍然考虑它们。但是,由于它们未实现,我们不希望有人调用它们。我们希望在编译时进行此检查,以确保正确性。
我的愿望是:
编译时间(可能是错误或警告;警告更好,因为它们更灵活 - 我们可以选择性地关闭它们)
在 G++4.8.1 上工作并且不会终止 Visual Studio 2013 下的构建(我们仅将 Visual Studio/VisualAssistX 用作编辑器,但重构工具在没有构建的情况下无法工作)
不难理解做了什么以及为什么
函数存在于类文档中(我们可以包含一些
\warning not implemented in phase 1符号以便 doxygen 获取)
我正在考虑三个选项:
marking them as deprecated 的腰带和吊带方法(将生成警告)并引发自定义异常 - 这几乎是我想要的,除了编译器警告它“已弃用”与实际情况相反: 不推荐使用的方法现在可以工作,但以后不会工作;此方法稍后会起作用,但现在不起作用
另一个答案告诉how to forbid using a function while still having it exist - 这很好但不可读且难以搜索。另外,这是一个编译时错误——如果我们改变主意,我们不能让某些函数调用它——要么全有,要么全无。让每个未实现的函数成为模板让我想知道这个技巧是否总是有效。例如,虚函数不能是模板。
-
只是将它们作为评论添加 - 阻止人们调用它们,但它们也不会出现在自动生成的文档中(我们以后无法决定是否进行选择性调用)
有没有更好的方法?如果没有,是否有理由更喜欢模板或注释选项而不是弃用选项?
【问题讨论】:
-
@JoachimPileborg 那(带模板)是我上面提到的forbid using 答案中使用的。 This answer 告诉我们为什么需要模板。