在我用它们执行操作之前,有些地方检查有效指针; 这些检查有时可以很深入地嵌套.
例如,我有
if (a)
{
if (a->b())
{
if (a->b()->c())
{
a->b()->c()->DoSomething();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我真的不喜欢这个样子.有没有办法把它变成更具可读性的东西?理想的情况下,
if (a && a->b() && a->b()->c() )
{
...
}
Run Code Online (Sandbox Code Playgroud)
会很棒,但显然不会奏效.
编辑 - nvm我提出的例子正如大家所指出的那样工作.我测试了它是否有效,但我的测试中的代码中有一个错误.咄!
我有几个html页面解释了我的代码的不同部分,我最近也运行了Doxygen.我想在Doxygen'd"相关页面"页面下添加指向当前html页面的链接.
除了手动插入之外,有没有其他方法可以做到这一点?
我有这些课程:
class Base
{
...
private:
std::vector<X> v;
};
class Derived : public Base
{
Derived(X*, int n);
};
Run Code Online (Sandbox Code Playgroud)
其中Derived的构造函数传递了一个项目X的数组,我需要在Base类中插入到我的vector v中.(X是智能指针)
目前我看到两种方法:
我没有看到#2的任何优势,但是想知道#1是否是一个好的解决方案,或者是否有更好的方法来做到这一点.
谢谢!
我希望我的应用程序看起来与Windows版本类似:不是将菜单移到Os X的顶层菜单中,我希望我的程序将文件菜单放在应用程序本身的顶部.
我已经查看了有关此问题的Qt文档,但我似乎无法创建一个空的QMenuBar作为顶级QMenuBar.(我正在使用QMainWindow的子类......)
struct reserved_memory
{
void *safety;
size_t safety_size;
reserved_memory(size_t size) : safety_size(size)
{
init();
}
bool use() {
if (safety) {
::operator(safety);
safety=0;
return true;
} else
return false;
}
private:
void init()
{
safety=::operator new(safety_size);
}
}
Run Code Online (Sandbox Code Playgroud)
我有这个没有编译的代码 - 我以前也没见过这个.这是调用构造函数吗?结构中没有重载()运算符...