Visual Studio 2010中一个很酷的新C++特性是lambda表达式.但是,我无法让他们在托管类中工作.
class UnmanagedClass {
void Foo() {
// Creating empty lambda within unmanaged class.
// This compiles fine.
auto lambda = [](){ ; };
}
};
ref class ManagedClass {
void Foo() {
// Creating empty lambda within managed class.
// This creates error C3809:
// A managed type cannot have any friend functions/classes/interfaces.
auto lambda = [](){ ; };
}
};
Run Code Online (Sandbox Code Playgroud)
我最好的猜测是编译器将匿名函数类创建为友元类,即使我从不使用类成员.这似乎意味着lambda不能在ref类中使用.
当我读到VS2010将lambda表达式添加到C++时,我感到非常高兴.有人知道如何让他们在ref类中工作吗?
我需要在perl中传回一个枚举值,我该怎么做?
从这个线程拉出来:Perl是否有枚举类型?
use strict;
use constant {
HOME => 'home',
WORK => 'work',
MOBILE => 'mobile',
};
my $phone_number->{type} = HOME;
print "Enum: ".$phone_number->{type}."\n";
Run Code Online (Sandbox Code Playgroud)
但这不应该返回索引0吗?或者我理解这个错误?
编辑:
对于枚举类型,这样的事情会更令人期待吗?
use strict;
use constant {
HOME => 0,
WORK => 1,
MOBILE => 2,
};
my $phone_number->{type} = HOME;
print "Enum: ".$phone_number->{type}."\n";
Run Code Online (Sandbox Code Playgroud)
编辑#2
此外,我想验证所选的选项,但传回Word而不是值.我怎样才能充分利用这两个例子?
@VALUES = (undef, "home", "work", "mobile");
sub setValue {
if (@_ == 1) {
# we're being set
my $var = shift;
# validate the argument
my $success …Run Code Online (Sandbox Code Playgroud) 我有一个对象数组(比如图像),它太大而无法放入内存(例如40GB).但是我的代码需要能够在运行时随机访问这些对象.
做这个的最好方式是什么?
从我的代码的角度来看,当然,如果某些数据存在于磁盘上或临时存储在内存中,则无关紧要; 它应该具有透明访问权限:
container.getObject(1242)->process();
container.getObject(479431)->process();
Run Code Online (Sandbox Code Playgroud)
但是我应该如何实现这个容器呢?它应该只是将请求发送到数据库吗?如果是这样,哪一个是最佳选择?(如果是数据库,那么它应该是免费的而不是太多的管理麻烦,也许Berkeley DB或sqlite?)
我是否应该自己实现它,在访问沙子时,在内存充满时将内存记忆清除?或者那里有好的库(C++)吗?
对容器的要求是它最小化磁盘访问(我的代码可能更频繁地访问某些元素,因此它们应该保存在内存中)并允许快速访问.
更新:我发现STXXL不能解决我的问题,因为我存储在容器中的对象具有动态大小,即我的代码可以在运行时更新它们(增加或减少某些对象的大小).但STXXL无法处理:
STXXL容器假定它们存储的数据类型是普通旧数据类型(POD). http://algo2.iti.kit.edu/dementiev/stxxl/report/node8.html
你能否评论其他解决方案?那么使用数据库呢?哪一个?
当我尝试从Visual Studio 2008到SQL Server 2008上的数据库建立新的数据连接时,它会失败.它说,它支持SQL Server连接,仅限SQL Server 2005版本.
我的装置缺少什么?或者我应该改变哪些设置?
这是我遇到的一个奇怪的问题.
我的记录选择公式如下,出于此错误的目的,我已将其缩小:
reportDocument.RecordSelectionFormula = " {@ClientName} = 'Smith' "
Run Code Online (Sandbox Code Playgroud)
如果我将这个精确的选择语句复制到Crystal中,它的预览很好,但是当从.NET运行时,我得到了
'此字段名称未知'.
问题出现在@ClientName公式字段中.
@ClientName 只包含:
formula = {aw_illust.CL1LNAM}
Run Code Online (Sandbox Code Playgroud)
我也可以将它设置为一个空白字符串(formula =""),它仍然给出
"这个字段名称未知."
这是一个奇怪的部分,如果我绕过公式并将公式文本直接放入.NET中,一切正常.
reportDocument.RecordSelectionFormula = " {aw_illust.CL1LNAM} = 'Smith' "
Run Code Online (Sandbox Code Playgroud)
这是相同的记录选择,除了' @ClientName'公式替换为' {aw_illust.CL1LNAM}'.它恰好发生在这一个报告上,我还有很多其他的Crystal Reports正在使用.NET中引用的公式.有任何想法吗?
当我尝试将以下函数导出为dll时:
extern "C" __declspec(dllexport) void some_func()
{
throw std::runtime_error("test throwing exception");
}
Run Code Online (Sandbox Code Playgroud)
Visual C++ 2008给了我以下警告:
1>.\SampleTrainer.cpp(11) : warning C4297: 'some_func' : function assumed not to throw an exception but does
1> The function is extern "C" and /EHc was specified
Run Code Online (Sandbox Code Playgroud)
我需要extern"C",因为我使用Qt QLibrary加载DLL并解析函数名称.没有extern"C"就找不到some_func()函数.
我正在寻找一个超级简单的jQuery扩展.基本上我需要使用jQuery没有明确支持的一些事件.这些事件是iPhone的触摸事件,如ontouchstart,ontouchend和ontouchmove.
我通过这个工作:
// Sucks
$('.clickable').each(function() {
this.ontouchstart = function(event) {
//do stuff...
};
}
Run Code Online (Sandbox Code Playgroud)
哪种糟透,不合情理.这就是我想要的:
// Better
$('.clickable').touchstart(function() {
//do stuff...
}
Run Code Online (Sandbox Code Playgroud)
或者甚至更好1.4
// Awesome
$('.clickable').live('touchstart', function() {
//.. do stuff
}
Run Code Online (Sandbox Code Playgroud)
这些事件不需要特殊处理,并且应该像任何其他事件一样工作,但我似乎无法弄清楚如何扩展jquery以使它们像所有其他事件一样工作.
我们的应用程序需要安装HASP SRM设备驱动程序才能安装和运行我们的驱动程序.
目前,只有他们的5.50驱动程序在所有测试平台上一致地工作(他们的5.75(官方)和5.86(beta)驱动程序在测试的大约三分之一的计算机中崩溃).
因此,他们的5.50驱动程序是好的,当前可用的任何其他东西都被破坏,并且5.50驱动程序拒绝在Vista和Windows 7下加载.但是,如果我将exe的属性设置为"XP兼容模式",那么他们的5.50驱动程序安装并成功运行.
我在Windows 7下的注册表中挖了一下,我发现当我要求兼容模式时至少有一个条目:
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\
full-path REG_SZ WINXPSP3
Run Code Online (Sandbox Code Playgroud)
在尝试启动5.50驱动程序安装程序之前,我应该能够从安装程序添加该密钥.
问题:
我想在一个站点批量下载网页.我的'urls.txt'文件中有5000000个网址链接.这大约是300M.如何使多线程链接这些网址并下载这些网页?或批量如何下载这些网页?
我的想法:
with open('urls.txt','r') as f:
for el in f:
##fetch these urls
Run Code Online (Sandbox Code Playgroud)
或扭曲?
它有一个很好的解决方案吗?
我想为我的应用创建一个全局快捷方式.我使用addGlobalMonitorForEventsMatchingMask方法执行此操作的"酷新方法".问题是,我的事件没有被"消耗":我的快捷方式包括空格键,因此每当我使用快捷方式时,当我在Finder中时会弹出Quicklook.
我怎样才能防止这种情况发生?我知道这是可能的,因为许多应用程序,例如Bowtie iTunes控制器应用程序,都可以做到.
c++ ×2
database ×2
c++-cli ×1
c++11 ×1
cocoa ×1
connection ×1
dll ×1
dllexport ×1
enums ×1
events ×1
installer ×1
iphone ×1
javascript ×1
jquery ×1
lambda ×1
memory ×1
objective-c ×1
perl ×1
python ×1
sql-server ×1
twisted ×1
web-scraping ×1
winapi ×1
windows-7 ×1