你有没有恨它
class Foobar {
public:
Something& getSomething(int index) {
// big, non-trivial chunk of code...
return something;
}
const Something& getSomething(int index) const {
// big, non-trivial chunk of code...
return something;
}
}
Run Code Online (Sandbox Code Playgroud)
我们无法使用另一个方法实现这两种方法,因为您无法const从const版本中调用非版本(编译器错误).演员将被要求const从非const一个版本调用该版本.
有没有一个真正优雅的解决方案,如果没有,最接近一个?
我一直在谷歌搜索,我只是找不到一个简单的答案.它应该很简单,就像STL一般.
我想定义从std :: ostream公开继承的MyOStream.假设我想在每次将某些内容写入流中时调用foo().
class MyOStream : public ostream {
public:
...
private:
void foo() { ... }
}
Run Code Online (Sandbox Code Playgroud)
我知道ostream的公共接口是非虚拟的,那怎么办呢?我希望客户能够在MyOStream上使用operator <<和write()以及put()并使用我的类的扩展功能.
在我正在进行的软件项目中,我们使用了某些第三方库,遗憾的是,这些库产生了恼人的gcc警告.我们正在努力清除所有警告代码,并希望在GCC中启用treat-warnings-as-errors(-Werror)标志.有没有办法让这些我们无法修复的第三方生成的警告消失?
我在JavaScript中遇到过这种现象几次,整个脚本都包含在函数调用中,如下所示:
(function() {
// statements...
})();
Run Code Online (Sandbox Code Playgroud)
真实世界的例子,来自glow.mozilla.com客户端代码:https: //github.com/potch/glow/blob/master/media/glow.js
这种编码风格用于什么?使用和不使用包装函数样式之间的区别是什么?何时应该使用它?
c++ ×2
const ×1
gcc ×1
gcc-warning ×1
include ×1
inheritance ×1
javascript ×1
ostream ×1
stl ×1