静态检查工具显示违反以下代码:
class CSplitFrame : public CFrameWnd
...
class CVsApp : public CWinApp
CWnd* CVsApp::GetSheetView(LPCSTR WindowText)
{
CWnd* pWnd = reinterpret_cast<CSplitFrame*>(m_pMainWnd)->m_OutputBar.GetChildWnd(WindowText);
return pWnd;
}
Run Code Online (Sandbox Code Playgroud)
错误消息:类'CSplitFrame'继承自'CWnd'类
描述:避免强制转换继承层次结构.此规则检测从基类指针到子类指针的强制类型转换.
好处:允许强制转换继承层次结构会导致维护问题,而从基类进行向下转换始终是非法的.
参考文献:
- Scott Meyers,"有效的C++:50种改进程序和设计的具体方法",第二版,Addison-Wesley,(C)2005 Pearson Education,Inc.,章节:"继承和面向对象设计",第39项
- 联合攻击手,空中车辆,C++编码标准第4.23章类型转换,AV规则178
你认为不从基类指针转换为子类指针是一个好习惯吗?为什么以及何时应遵循此规则?
我们目前正在从谷歌CDN中提取jQuery和jQueryUI(以及jQueryUI CSS)库.我喜欢这个,因为我可以调用google.load("jquery", "1");
,最新的jQuery 1.xx将被使用.
现在我因为安全性而在本地拉出库.
我很乐意将它们拉到当地,但我想知道还有哪些其他好处和缺陷值得注意?
假设我有这些数据
4 1
4 0
4 1
3 0
5 1
Run Code Online (Sandbox Code Playgroud)
SUM
如果右侧的值为1,或者为true,我如何编写一个函数(使用或类似的东西)来添加左边的所有值
总数应为13
可能重复:
数组是否有SQL参数绑定?
我想知道是否还有将bind_param与SQL IN语句一起使用.根据perl文档,不能使用bind_param_array.有没有人遇到过同样的情况?
有没有办法既可以指定UITableView行动画的持续时间,也可以在动画完成时获取回调?
我想做的是在动画完成后闪烁滚动指示器.之前做闪光灯不会做任何事情.到目前为止,我的解决方法是延迟半秒(这似乎是默认的动画持续时间),即:
[self.tableView insertRowsAtIndexPaths:newRows
withRowAnimation:UITableViewRowAnimationFade];
[self.tableView performSelector:@selector(flashScrollIndicators)
withObject:nil
afterDelay:0.5];
Run Code Online (Sandbox Code Playgroud) 如何通过windows命令行使用'apkbuilder.bat'构建和签名(密钥库).apk文件?
我尝试运行以下行:
apkbuilder.bat %APK_File_Name% -u -z %Project_Path%\bin\resources.ap_ -f %Project_Path%\bin\classes.dex -rf %Project_Path%
Run Code Online (Sandbox Code Playgroud)
但我得到以下例外:
java.lang.ArrayIndexOutOfBoundsException: 1
at com.android.sdklib.build.ApkBuilderMain.main<ApkBuilderMain.java:61>
Run Code Online (Sandbox Code Playgroud)
请帮忙.谢谢
我有一个像下面这样的捕获块:
catch (Exception e)
{
connection.Close();
return null;
}
Run Code Online (Sandbox Code Playgroud)
我收到一条警告说'e'没有被使用.我不想用它.但是,如果我删除它,我会收到一个错误,说"类型预期".该怎么办?
foreach (var item in mainCanvas.Children)
{
if (item is Button)
{
(item as Button).Content = "this is a button";
}
}
Run Code Online (Sandbox Code Playgroud)
我可以使用LINQ或.NET 4的其他功能来更简洁(可能是高性能的)吗?
忍受我...我不认为这太主观但也许我错了.
最近我想分解出一些在我们的BlackBerry应用程序上绘制自定义位图背景的重复代码.
(这个问题并不是关于黑莓的,所以我将在这里提供一些关于BB GUI的细节,以便非BB的Java人可以权衡......)
FullScreen类来自BB API - 它有一个方法paint(Graphics),框架调用它来绘制屏幕和添加到它的任何组件.可以覆盖它来进行自定义绘制 - 比如在任何其他绘制发生之前绘制位图背景(较新的BB API提供Background类但我们的应用程序必须在旧手机上工作).
我想要一堆具有相同背景的屏幕,每个屏幕都做了一些自定义绘画...这就是我想出的:
abstract public class BGFullScreen extends FullScreen {
Bitmap bg;
public BGFullScreen(Manager mgr, long style) {
super(mgr, style);
bg = Bitmap.getBitmapResource("bg.jpg");
}
abstract protected void innerPaint(Graphics g);
protected void paint(Graphics g) {
g.drawBitmap(new XYRect(0, 0, bg.getWidth(), bg.getHeight()), bg, 0, 0);
innerPaint(g);
super.paint(g);
}
}
Run Code Online (Sandbox Code Playgroud)
然后,每个屏幕将子类化此抽象类并实现innerPaint().这样,当BB框架调用paint()方法时,每个屏幕都可以在绘制背景后进行自定义绘制(因此任何绘制都发生在背景之上)但是在绘制屏幕的组件之前,当使用FullScreen时. paint()被调用.
(我想出了这个,因为我在家里一直在研究Common Lisp,我想到我想要做的就像CLOS中的交错方法组合一样)
这是上面抽象类的示例实现:
public class MainAppScreen extends BGFullScreen {
public MainAppScreen() {
super(new VerticalFieldManager(), 0);
// add some components to the screen:
add(new …
Run Code Online (Sandbox Code Playgroud)