问题列表 - 第35972页

关于从基类到子类指针的向下转换

静态检查工具显示违反以下代码:

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'类

描述:避免强制转换继承层次结构.此规则检测从基类指针到子类指针的强制类型转换.

好处:允许强制转换继承层次结构会导致维护问题,而从基类进行向下转换始终是非法的.

参考文献:

  1. Scott Meyers,"有效的C++:50种改进程序和设计的具体方法",第二版,Addison-Wesley,(C)2005 Pearson Education,Inc.,章节:"继承和面向对象设计",第39项
  2. 联合攻击手,空中车辆,C++编码标准第4.23章类型转换,AV规则178

你认为不从基类指针转换为子类指针是一个好习惯吗?为什么以及何时应遵循此规则?

c++ mfc static-analysis casting effective-c++

5
推荐指数
2
解决办法
9392
查看次数

在本地托管jQuery的好处与陷阱

我们目前正在从谷歌CDN中提取jQuery和jQueryUI(以及jQueryUI CSS)库.我喜欢这个,因为我可以调用google.load("jquery", "1");
,最新的jQuery 1.xx将被使用.

现在我因为安全性而在本地拉出库.

我很乐意将它们拉到当地,但我想知道还有哪些其他好处和缺陷值得注意?

javascript jquery jquery-ui cdn

78
推荐指数
6
解决办法
4万
查看次数

转义字符

有一种字符串,您可以在其中禁用文字转义字符的处理并按原样打印字符串.这个字符串是什么?用于为字符串添加前缀的符号,以及可能用于?

是吗 \?

c#

7
推荐指数
3
解决办法
2753
查看次数

电子表格:仅当文本列的值为1时,如何对列中的值进行SUM?

假设我有这些数据

4     1
4     0
4     1
3     0
5     1
Run Code Online (Sandbox Code Playgroud)

SUM如果右侧的值为1,或者为true,我如何编写一个函数(使用或类似的东西)来添加左边的所有值

总数应为13

excel numbers spread

4
推荐指数
1
解决办法
1万
查看次数

使用Perl bind_param和SQL IN语句

可能重复:
数组是否有SQL参数绑定?

我想知道是否还有将bind_param与SQL IN语句一起使用.根据perl文档,不能使用bind_param_array.有没有人遇到过同样的情况?

http://search.cpan.org/perldoc?DBI#bind_param_array

sql perl dbi

1
推荐指数
1
解决办法
3014
查看次数

UITableView行动画持续时间和完成回调

有没有办法既可以指定UITableView行动画的持续时间,也可以在动画完成时获取回调?

我想做的是在动画完成后闪烁滚动指示器.之前做闪光灯不会做任何事情.到目前为止,我的解决方法是延迟半秒(这似乎是默认的动画持续时间),即:

[self.tableView insertRowsAtIndexPaths:newRows
                      withRowAnimation:UITableViewRowAnimationFade];
[self.tableView performSelector:@selector(flashScrollIndicators)
                     withObject:nil
                     afterDelay:0.5];
Run Code Online (Sandbox Code Playgroud)

iphone animation cocoa-touch uitableview ios

96
推荐指数
7
解决办法
4万
查看次数

如何从Windows命令行构建.apk文件?

如何通过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)

请帮忙.谢谢

android apk

9
推荐指数
1
解决办法
9953
查看次数

没有arg的Catch块

我有一个像下面这样的捕获块:

catch (Exception e)
            {
                connection.Close();
                return null;
            }
Run Code Online (Sandbox Code Playgroud)

我收到一条警告说'e'没有被使用.我不想用它.但是,如果我删除它,我会收到一个错误,说"类型预期".该怎么办?

c#

0
推荐指数
1
解决办法
619
查看次数

LINQ表达式优化语法?

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的其他功能来更简洁(可能是高性能的)吗?

c# linq .net-4.0

3
推荐指数
1
解决办法
262
查看次数

这是一个像Java的人吗?

忍受我...我不认为这太主观但也许我错了.

最近我想分解出一些在我们的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)

java oop blackberry

5
推荐指数
1
解决办法
214
查看次数