草庐IT

c# - 在应用依赖注入(inject)时,Func<in T, out TResult> 是否适合用作 ctor arg?

例子:publicclassBusinessTransactionFactorywhereT:IBusinessTransaction{readonlyFunc_createTransaction;publicBusinessTransactionFactory(FunccreateTransaction){_createTransaction=createTransaction;}publicTCreate(){return(T)_createTransaction(typeof(T));}}使用相同的容器设置代码:publicclassDependencyRegistration:

c# - 为什么 c# 编译器在某些情况下会发出 newobj/stobj 而不是 'call instance .ctor' 来进行结构初始化

这里是一些用C#编写的测试程序:usingSystem;structFoo{intx;publicFoo(intx){this.x=x;}publicoverridestringToString(){returnx.ToString();}}classProgram{staticvoidPrintFoo(refFoofoo){Console.WriteLine(foo);}staticvoidMain(string[]args){Foofoo1=newFoo(10);Foofoo2=newFoo(20);Console.WriteLine(foo1);PrintFoo(reffoo2)

c# - 为什么在将 C# 代码编译为 IL 时会创建 .ctor()?

使用这个简单的C#代码,我运行cschello.cs;ildasm/out=hello.txthello.exe.classHello{publicstaticvoidMain(){System.Console.WriteLine("hi");}}这是ildasm的IL代码。.classprivateautoansibeforefieldinitHelloextends[mscorlib]System.Object{.methodpublichidebysigstaticvoidMain()cilmanaged{.entrypoint//Codesize13(0xd).maxstack

java - 尝试从 Clojure 填充 Java 类时出现 "No matching ctor found"

我在尝试从Clojure填充Java类时收到“未找到匹配的构造函数”错误。我想从Clojure填充这个类。importjava.util.Date;publicclassAccount{Account(){acct_num=0;trans_type='U';trans_amt=0.00;cur_bal=0.00;last_update=null;}publicintacct_num=0;publicchartrans_type;publicdoubletrans_amt=0.00;publicdoublecur_bal=0.00;publicDatelast_update;}我可以导入

c++ - 这是一个有效的 Copy Ctor 吗?

请问是不是下面的拷贝构造函数有问题?classA{private:intm;public:A(Aa){m=a.m}} 最佳答案 两件事:复制构造函数必须将引用作为参数,否则它们是无限递归的(事实上语言不允许你声明这样的构造函数)它不做默认复制构造函数不做的任何事情,但做得很糟糕-您应该尽可能在复制构造函数中使用初始化列表。如果默认的复制构造器可以满足您的需求,请不要试图自己编写版本-您可能只会弄错,并且需要维护它。 关于c++-这是一个有效的CopyCtor吗?,我们在StackOver

c++ - 单例类找不到 ctor 但编译、运行并使实例未初始化

我在MSVC++17版本15.5.5中实现单例模式时遇到问题。我正在编译标志/std:c++17.我的实现包含以下辅助类:#pragmaonce#includetemplateclassSingleton:privateT{public:virtual~Singleton()=default;templatestaticT&initInstance(Targs&&...args){assert(instance==nullptr);instance=newSingleton(std::forward(args)...);//TheconstructorofTmightbeinacces

c++ - Visual C++ 无法推断在 ctor 中用作默认值的函数的给定(!)模板参数

我正在尝试使用模板函数返回模板类构造函数中参数的默认值。函数的模板参数也是类的模板参数。我在下面提供了一个示例。背景该示例显示了确切的用例和依赖项,因为它们也出现在我的应用程序中。X类实际上是一个相当大的类,它管理一个大数据block,该大数据block被分成更小的block。类助手是一个内存管理器,它以较小的block大小分配和释放内存。实际上,GetHelper函数会在运行时尝试推导出Helper的一些构造函数参数,所以这就是我使用这种设计的原因。实际问题当定义了宏USE_NS和SHOW_ERROR时,代码无法编译,在第66行给出错误C2783无法推断模板参数。这是我尝试使用模板函

c++ - ctor 声明/定义中接受的 const 限定符(llvm 错误?)

我的编译器(实际上是AppleLLVM5.0版(clang-500.2.79)(基于LLVM3.3svn))接受(编译)该代码:classX{private:inti;public:constX(){cout它的工作方式就好像没有const限定符引导ctor定义一样。我尝试了-Wall、-pedantic不同类型的标准激活,总是一样的......所以:我错过了什么吗?我没能发现它在最新标准中的句法是正确的……这是gcc/llvm的错误吗?似乎gcc/llvm默默地忽略了const。这是我错过的功能吗?我的示例无法证明它的用处吗?注意:gcc3.4.3不编译它,gcc4.4.5也不编译。

c++ - 是否可以用 lambda 初始化变量(当复制 ctor 被删除时)?

我有以下代码:structA{//现场观看:http://coliru.stacked-crooked.com/a/a5c5912bd79053c3编译时出现如下错误:g++-std=c++17-O2-Wall-pedantic-pthreadmain.cpp&&./a.outmain.cpp:Inlambdafunction:main.cpp:12:12:error:useofdeletedfunction'A::A(constA&)'returnres;^~~main.cpp:4:3:note:declaredhereA(constA&)=delete;^我知道我可以将其包装在另一

c++ - boost::shared_ptr,ctor 中的一个原子递增,但 dtor 中的两个原子递减?

我正在单步执行boost::shared_ptr的源代码,并且在构造时引用计数器调用一次原子增量。但是,在销毁时我看到原子递减被调用了两次,连接到弱引用?但是,这怎么行呢?在构建时递增一次,在销毁时递减两次,一次在release()中,一次在weak_release()中? 最佳答案 shared_ptr必须维护两个引用计数。一个用于共享实例,一个用于可能通过weak_ptr引用。有了这个,weak_ptr能够增加shared_ptr中的弱引用计数并保持shared_ptr事件(即使在分配的对象被释放之后)以确定从weak_ptr到