有人能告诉我为什么以下不会编译?
#include "a.h"
#include <list>
#include <algorithm>
#include <tr1/functional>
using namespace std;
class B {
public:
B() {
list< A* > aList;
A* a = new A();
lower_bound( aList.begin(), aList.end(), a, tr1::bind( &B::aComp, tr1::placeholders::_1, tr1::placeholders::_2 ) );
}
private:
bool aComp( A* a1, A* a2 );
};
Run Code Online (Sandbox Code Playgroud)
编译输出:
In file included from c:\qt\2010.04\mingw\bin\../lib/gcc/mingw32/4.4.0/include/c++/tr1/functional:56,
from ..\bindTest\/b.h:4,
from ..\bindTest\b.cpp:1:
c:\qt\2010.04\mingw\bin\../lib/gcc/mingw32/4.4.0/include/c++/tr1_impl/functional: In member function 'typename std::tr1::result_of<_Functor(typename std::tr1::result_of<std::tr1::_Mu<_Bound_args, std::tr1::is_bind_expression::value, (std::tr1::is_placeholder::value > 0)>(_Bound_args, std::tr1::tuple<_UElements ...>)>::type ...)>::type std::tr1::_Bind<_Functor(_Bound_args ...)>::__call(const std::tr1::tuple<_UElements ...>&, std::tr1::_Index_tuple<_Indexes ...>) [with _Args = …Run Code Online (Sandbox Code Playgroud) 假设我有这个2D数组映射
{ 0,0,0,0,7,1,1,1,1,1,1,1,1 },
{ 0,7,7,7,7,1,1,1,24,1,1,1,1 },
{ 0,7,24,24,24,24,24,24,24,1,1,3,1 },
{ 0,7,23,23,23,23,23,23,24,1,1,3,1 },
{ 0,7,24,23,23,23,23,23,23,1,1,1,1 },
{ 0,7,24,23,23,23,23,23,23,1,1,1,1 },
{ 0,7,23,23,23,23,23,23,24,1,3,1,1 },
{ 0,7,24,24,24,24,24,24,24,1,3,1,1 },
{ 0,0,0,0,1,1,1,1,1,1,1,1,1 },
Run Code Online (Sandbox Code Playgroud)
我有HashSet充满定义被阻止的瓷砖的整数.什么是一个好方法,以便当我点击地图的一部分时,我的玩家站在那里做一个好的寻路?A*(使用节点/等)?你有什么建议?
谢谢.
我有一个XML org.w3c.dom.Node,如下所示:
<variable name="variableName">
<br /><strong>foo</strong> bar
</variable>
Run Code Online (Sandbox Code Playgroud)
如何将<br /><strong>foo</strong> bar零件作为String?
请注意,我正在尝试使用NotifyCollectionChangedAction.Add操作而不是.Reset.后者确实有效,但对于大型集合来说效率不高.
所以我继承了ObservableCollection:
public class SuspendableObservableCollection<T> : ObservableCollection<T>
Run Code Online (Sandbox Code Playgroud)
由于某种原因,这段代码:
private List<T> _cachedItems;
...
public void FlushCache() {
if (_cachedItems.Count > 0) {
foreach (var item in _cachedItems)
Items.Add(item);
OnCollectionChanged(new NotifyCollectionChangedEventArgs(
NotifyCollectionChangedAction.Add, (IList<T>)_cachedItems));
}
}
Run Code Online (Sandbox Code Playgroud)
抛出 一个集合添加事件是指不属于集合的项目
这似乎是BCL的一个错误?
我可以在调用OnCollectionChanged之前逐步查看将新项添加到this.Items
哇
刚刚发现了一个惊人的发现.这些方法都不适合我(flush,addrange),因为只有当这个集合绑定到我的Listview时才会触发错误!
TestObservableCollection<Trade> testCollection = new TestObservableCollection<Trade>();
List<Trade> testTrades = new List<Trade>();
for (int i = 0; i < 200000; i++)
testTrades.Add(t);
testCollection.AddRange(testTrades); // no problems here..
_trades.AddRange(testTrades); // this one is bound to ListView .. BOOOM!!!
Run Code Online (Sandbox Code Playgroud)
总之,ObservableCollection确实支持添加增量列表,但ListView不支持.Andyp想出了一个解决方法,使其适用于下面的CollectionView,但是由于调用了.Refresh(),这与调用OnCollectionChanged(.Reset)没什么不同.
我一直在分支机构工作并做了一些提交.现在有什么方法可以在TortoiseHg中看到,如果这些提交被推或者它们仍然只是本地的?
我有一个ASP.Net 4.0 Web应用程序,它经常从数据库加载数据并对其进行繁重的计算.我想将这些已加载和准备好的数据缓存在中央缓存中,每个使用该应用程序的用户和计算机都可以访问该缓存.
简单的用例:
我知道ASP.Net有一个内置的缓存机制.我不知道的是它是否可以在同一时间访问不同计算机上的站点的不同用户之间共享.我还想知道系统在Web场环境中的行为方式.
我们有一个.NET库,它引用了我们的一个非托管dll,让我们说:
到目前为止,Unmanaged.dll只有32位,所以DotNet.dll标有32位CPU类型.
需要添加64位支持.如何组织dll?对于32位和64位版本,DotNet.dll的IL代码都是相同的.
在这种情况下,使用这些库的开发人员被迫生成2个应用程序:32位和64位.但在这种情况下,确切知道发生了什么.
这与选项1相同,但DotNet.dll具有AnyCPU的CPU类型.
我不喜欢这个,因为使用这些库的开发人员在重新分发他们的应用程序时不能很好地使他们的应用程序不会崩溃而不在他们的应用程序上设置CPU类型:
这使得选项1优于选项2.
DotNet.dll在运行时将确定它运行的位数,然后PInvoke正确的Unmanaged.dll.
我们目前正在尝试将现有的经典ASP页面集成到我们记录到事件日志的新方法中.我们通过将.NET程序集公开为COM对象来实现此目的,该COM程序将实际记录到事件日志中.这一切都正常,但是当我们尝试写入事件日志时,我们收到错误"无法打开源'SourceName'的日志.您可能没有写访问权限." 从aspx页面调用时,日志代码本身可以正常工作.这显然是IUSR_machinename帐户的权限问题,但是,通过查看其他一些相关帖子,我们尝试了许多解决方案而没有任何成功.
我们唯一的成功是使用ASP.NET模拟在服务器上使用新创建的本地管理员帐户.但是,这个用户可以使用,这是一种解决方法,而不是解决初始权限问题.还有什么我们可以尝试使用IUSR_machinename帐户获取权限吗?
在我们升级到visual studio 2010和4.0框架后,我们的主干构建立即开始打破无法加载文件或程序集错误.
我们确定了一个3.5的项目不能引用4.0其他项目因为,作为错误状态,我们会得到这个错误该组件由运行时比当前加载的运行新建成并无法加载.
我们已经解决了这个问题,后备箱一直很好.
然而,我最近做了一个分支和标记,当我尝试构建分支时,突然出现了这个错误; 除了错误是关于我们自己的.net 4.0项目对System.Configuration DLL的引用之一.
Towps.Namespace.MyService.csproj在Core.Dev\Towps\Projetcs \应用\为MyService:
RG0000:无法加载引用的程序集
"C:\ WINDOWS\Microsoft.Net \装配\ GAC_MSIL\System.Configuration\v4.0_4.0.0 .0__b03f5f7f11d50a3a\System.Configuration.dll".
抓到一个BadImageFormatException说:"无法加载文件或程序集
'C:\ WINDOWS\Microsoft.Net \装配\ GAC_MSIL\System.Configuration\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll'.或者它的一个依赖
此程序集由比当前加载的运行时更新的运行时构建,无法加载." 在ResGen(0,0)
我尝试在该系统上设置特定的版本属性.配置DLL引用为true.
我可以在其属性中看到运行时版本是v4.0.30319,版本是4.0.0.0.
该DLL裁判的路径是C:\ Program Files文件(x86)的\参考大会\微软\ Framework.NETFramework\V4.0\System.Configuration.dll这对我来说看起来不错.
CrusieControl使用MSBuild尝试构建的csproj文件的目标框架是针对框架4.0.再好像.
它构建在IDE中,用于主干和分支.Cruise Control在后备箱中构建它.当CrusieControl尝试构建时,分支构建失败.
有什么想法会发生什么?
这可能是一个MSBuild不匹配,但我已经扫描的配置文件和CruiseControl的使用并有年长MSBuilds没有引用的MSBuild PROJ文件; 这是有道理的,因为所有这些都更新,以使主干工作.
分支只是一个主干的副本,所以我很难确定可能有什么区别!
Android文档说postExecute()在UI线程上调用了AsyncTask .我的印象postExecute()是从被调用的Thread execute()调用的:我一直在后台Service中使用AsyncTask并使用自己的线程,并且在服务线程中调用了postExecute(),而不是主线程.
但是,我最近遇到了一个问题,即postEecute()根本没有被调用,而抛出异常:"在死线程上向处理程序发送消息".
具体如何:
- AsyncTask只能在主线程中使用吗?
- 如果没有,postExecute()应该调用哪个线程:总是UI线程,还是execute()调用线程?
谢谢
.net ×2
asp.net ×2
c# ×2
java ×2
.net-4.0 ×1
2d ×1
32bit-64bit ×1
a-star ×1
android ×1
arrays ×1
assemblies ×1
bind ×1
c#-4.0 ×1
c++ ×1
caching ×1
changeset ×1
commit ×1
comparison ×1
dll ×1
dom ×1
events ×1
generics ×1
logging ×1
managed ×1
mercurial ×1
path-finding ×1
permissions ×1
push ×1
stl ×1
subclass ×1
tortoisehg ×1
unmanaged ×1
xml ×1