草庐IT

name-binding

全部标签

java - 私有(private)方法的动态绑定(bind) : Java vs. C++

这在Java中是不允许的:classA{publicvoidmethod(){}}classBextendsA{privatevoidmethod(){}}它会产生一个编译错误:error:method()inBcannotoverridemethod()inAattemptingtoassignweakeraccessprivileges;waspublic然而,这在C++中是允许的:classA{public:virtualvoidmethod(){}};classB:publicA{private:voidmethod(){}};intmain(void){A*obj=newB(

c++ - Cygwin 的 cmake 与 CMAKE_SYSTEM_NAME 不匹配

我在使用cmake的cygwin上有一个奇怪的行为。我尝试检查我的CMakeLists.txt中的操作系统,但似乎这种特殊情况不起作用......这是一个引发我的问题的例子:set(FOO"BAR")message(${CMAKE_SYSTEM_NAME})if(${CMAKE_SYSTEM_NAME}STREQUAL"CYGWIN")message("EQUALSCYGWIN")endif()if(${CMAKE_SYSTEM_NAME}MATCHES"CYGWIN")message("MATCHESCYGWIN")endif()if(${FOO}MATCHES"BAR")messa

c++ - 可变参数增强绑定(bind)类型解析

我正在尝试编写一个异步记录器,该记录器接受可变参量,然后使用可变参量串将它们串在一起,然后推入单个生产者单个消费者队列。我被困在Log结构的enqueue函数部分中,该部分如下所示:templatestd::stringLog::stringer(Tconst&t){returnboost::lexical_cast(t);}templatestd::stringLog::stringer(Tconst&t,Argsconst&...args){returnstringer(t)+stringer(args...);}templatevoidLog::enqueue(T&t,Args&

c++ - 如何将 std::bind 作为通用引用类型传递?

据我了解,std::bind完美地转发它包装的可调用对象和该可调用对象的参数;std::bind返回对象本身是可移动和/或可复制的,具体取决于可调用对象及其参数是否可移动和/或可复制;一个std::bind返回对象可能是嵌套的,在这种情况下,外部std::bind返回对象是可移动和/或可复制的,就像绑定(bind)其他可调用对象时一样。因此,我希望下面的代码片段可以正常编译。相反,代码在main()中的最后两个语句中生成了大量编译器错误。.#includetemplatevoidcall_handler(HandlerType&&handler){handler();}template

c++ - Gtest : Expected Class-Name Before '{'

我正在尝试将Gtest下的测试用例转换为使用测试夹具,以便在添加更多测试时可以使用通用设置。但是,这会导致错误:test_integrate.cc:4:47:error:expectedclass-namebefore'{'tokenclassIntegratorTest:public::testing::test{这种失败是我无法理解的,因为根据我的经验,它通常是由循环导入引起的,并且导入与工作代码相比没有变化。完整代码如下:#include"gtest/gtest.h"#include"utils/integrate.hpp"classIntegratorTest:public::

c# - 为 C++ 类的复杂系统创建 C# 绑定(bind)?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我有现有的C++库,其中包含许多协同工作的不同类。一些示例用法应该包括将一个类的实例传递给另一个类的构造函数/方法。我计划使用C++/CLI为这些C++类提供C#绑定(bind),因此我不必移植整个C++代码。我已经可以通过创建另一个类来以“Facade”的方式做到这一点,该类向用户隐藏现有C++代码中使用的所有类。但是,我想要的是向用户提供具有相同方法签名的相同类。对此有什么指导方针或建

c++ - typedef-name 作为基类 : illegal but widely tolerated

[class.derived]的第一段说的是基类说明符,Ifthenamefoundisnotaclass-name,theprogramisill-formed.但是,一个simple测试表明Comeau和g++-ansi-pedantic都接受typedef-name作为基础。Boostheader上的简单grep-r'[^:]:mpl'表明流行的库通常依赖于这种行为。是否有任何编译器实际上拒绝了基说明符中类的typedef?GCC甚至检查基类类型是否不是const,这改进了非标准功能。有解决办法吗?我唯一能想到的就是用C++11别名模板替换typedef。一个模板化的别名声明声明

c++ - 虚函数和 boost 绑定(bind)奇怪的行为

我在Linux下写的一段代码中看到了一个奇怪的行为,我想分享一下,看看是否有人知道原因。我有一个基类和一个派生类。在基类中我定义了一个虚方法,在派生类中我重新定义了那个方法,具有相同的签名。然后我使用boostbind来启动一个线程。这是示例代码:ClassBase{public:virtualvoidDoSomething();virtualvoidInit()=0;...}ClassDerived:publicBase{public:voidDoSomething();voidInit();...}在Derived类的Init方法中我这样做了:boost::thread*t=new

C++ 编译错误 - 命名空间 std 中的 "no type named ' 函数”

我正在为我的C++编程类(class)作业,其中涉及实现HashMap。我的导师给了我们一个头文件,我们需要将其与我们的HashMap类一起使用。提供的头文件包含以下行:typedefstd::functionHashFunction;根据我对C++的(有限的)理解,这会将HashFunction类型定义为std::function。但是,当我编译代码时,出现错误:./HashMap.h:46:15:error:notypenamed'function'innamespace'std'typedefstd::functionHashFunction;~~~~~^./HashMap.h:

C++11 "late binding"模板参数

请不要误解我的“后期绑定(bind)”,我不是指通常的运行时后期绑定(bind),我指的是别的意思,找不到更好的词来形容它:考虑到我正在为一些需要将这些值与比较器进行比较的值类型V处理容器(或类似的)数据结构Containor,所以我的第一个模板看起来像这样template>structContainor{};现在,我的Containor结构在内部使用了另一个容器。要使用哪个容器也应该可以通过模板参数进行配置,假设默认值为std::set。所以我的下一个版本的Containor看起来像这样:template,typenameCont=std::set>structContainor{}