我需要从非const对象调用const函数.见例子
struct IProcess {
virtual bool doSomeWork() const = 0L;
};
class Foo : public IProcess {
virtual bool doSomeWork() const {
...
}
};
class Bar
{
public:
const IProcess& getProcess() const {return ...;}
IProcess& getProcess() {return ...;}
void doOtherWork {
getProcess().doSomeWork();
}
};
Run Code Online (Sandbox Code Playgroud)
调用
getProcess().doSomeWork();
Run Code Online (Sandbox Code Playgroud)
总是会打电话给
IProcess& getProcess()
Run Code Online (Sandbox Code Playgroud)
还有另一种方式来打电话
const IProcess& getProcess() const
Run Code Online (Sandbox Code Playgroud)
来自非常数成员函数?我到目前为止使用过
const_cast<const Bar*>(this)->getProcess().doSomeWork();
Run Code Online (Sandbox Code Playgroud)
这样做的技巧,但似乎过于复杂.
编辑:我应该提到代码正在重构,最终只剩下一个函数.
const IProcess& getProcess() const
Run Code Online (Sandbox Code Playgroud)
但是,目前存在副作用,并且const调用可能在某些时候返回不同的IProcess实例.
请继续主题.
一位同事写了一个Windows应用程序,让我去做安装程序.我通过Visual Studio创建了安装程序项目,并将服务项目的主要输出添加到新项目中.
当我运行安装程序时,它会创建正确的文件夹并复制dll,exe和config文件,但它不会执行服务的实际安装.
该服务未列在"服务"窗口中,如果我双击exe,我告诉我需要运行installutil来安装该服务.
如何让安装程序为我做这一点?我找到了这篇文章:
http://www.codeproject.com/KB/install/InstallService.aspx
但这似乎过于复杂,我希望它是非常基本的.
我在WPF中有一个组合框,我在运行时添加项目(通过绑定到List的数据).我想动态设置下拉框的高度,以便显示所有(或大多数)项目.不幸的是,下拉列表的高度似乎设置了一次,并且无法动态更改.它似乎总是相同的大小.
是否有一些相对简单的调整下拉高度?
是的,我已经尝试在将项目添加到组合框后进行设置.在调试器中,它看起来像是新值.但是,当我打开下拉列表时,它会下降到自己选择的大小.我试过夸大MaxDropDownHeight,甚至把它设置为"自动"无济于事.
从Web服务(WCF),我希望端点花费10秒钟完成.
有没有办法thread.sleep(10);在方法上做?
我希望有一个UIDatePicker用户可以选择一个月和一天而不是一年的地方.我知道闰年还有一天,所以为了简单起见,让我们放弃那一天.
是否有任何方法可以删除年份列或有2个卷轴,其中月/日的行为类似于UIDatePicker(所选月份中不存在的灰色天数)?
我正在使用一个具有子对象的对象(参见下面的示例).我试图绑定List<rootClass>到数据网格.当我绑定List<>,在包含的单元格中subObject,我看到以下值... "namespace.subObject" ...,字符串值正确显示.
理想情况下,我希望看到subObjectdatacell中的"描述"属性.如何subObject.Description在datacell中映射显示?
public class subObject
{
int id;
string description;
public string Description
{ get { return description; } }
}
public class rootClass
{
string value1;
subObject value2;
string value3;
public string Value1
{ get { return value1; } }
public subObject Value2
{ get { return value2; } }
public string Value3
{ get { return value3; } }
}
Run Code Online (Sandbox Code Playgroud) 我正在用bash编写一个每晚构建脚本.
一切都很好,花花公子除了一个小小的障碍:
#!/bin/bash
for file in "$PATH_TO_SOMEWHERE"; do
if [ -d $file ]
then
# do something directory-ish
else
if [ "$file" == "*.txt" ] # this is the snag
then
# do something txt-ish
fi
fi
done;
Run Code Online (Sandbox Code Playgroud)
我的问题是确定文件扩展名,然后相应地采取行动.我知道问题出在if语句中,测试txt文件.
如何确定文件后缀是否为.txt?
这句话被用作警告,代码正在拉动一些严重的特技.我谷歌搜索这个是拉起虚无; 但是我记得有人正在搜索google来源这句话很长一段时间.
在龙龙?
龙在这里睡觉......
呸...
我想让Visual Studio将自动完成的结束标记向右移动一个单词(或更多).例如,给定以下HTML:
<p>I need to emphasize some text.</p>
Run Code Online (Sandbox Code Playgroud)
如果我<em>在"强调"一词之前键入,Visual Studio会自动填充如下:
<p>I need to <em></em>emphasize some text.</p>
Run Code Online (Sandbox Code Playgroud)
然后我需要移动结束</em>以获得我想要的东西:
<p>I need to <em>emphasize</em> some text.</p>
Run Code Online (Sandbox Code Playgroud)
有没有办法让Visual Studio自动完成最后一步?