草庐IT

c++ - 将私有(private)部分保留在 c++ header 之外 : pure virtual base class vs pimpl

我最近从Java和Ruby切换回C++,令我惊讶的是,当我更改私有(private)方法的方法签名时,我不得不重新编译使用公共(public)接口(interface)的文件,因为私有(private)部分也在.h中文件。我很快想出了一个解决方案,我想这对Java程序员来说是典型的:接口(interface)(=纯虚拟基类)。例如:香蕉树.h:classBanana;classBananaTree{public:virtualBanana*getBanana(std::stringconst&name)=0;staticBananaTree*create(std::stringcons

c++ - 如何在 C++ v8 中解析参数对象

我想使用googlev8引擎在javascript中访问我的c++函数,并根据我的javascript函数中给出的参数返回结果。我的javascript函数如下:varresult=MyFc({'stringData':'abc','numberData':123,'arrData':[1,2,3],'objData':{'a':true,'b':false,'c':true},'callback':function(){}});我用过global->Set(v8::String::New("myFc"),v8::FunctionTemplate::New(MyFc));v8::Han

c++ - 如何在C++中实现继承并解决错误 "parent class is not accessible base of child class"?

我是C++新手。我喜欢探索C++中继承的概念。每当我尝试编译以下代码时,我都会收到错误消息:forC++includes,orinsteadofthedeprecatedheader.Todisablethiswarninguse-Wno-deprecated.D:\CPracticeFiles\Vehicle.cpp:Infunction`intmain()':D:\CPracticeFiles\Vehicle.cpp:26:error:`voidVehicle::setStationary_state(bool)'isinaccessibleD:\CPracticeFiles\Ve

c++: vector<Base> 可以包含 Derived 类型的对象吗?

标题几乎说明了一切。基本上,这样做是否合法:classBase{//stuff}classDerived:publicBase{//morestuff}vectorfoo;Derivedbar;foo.push_back(bar);根据我看过的其他帖子,下面是可以的,但我不想在这种情况下使用指针,因为很难使其线程安全。vectorfoo;Derived*bar=newDerived;foo.push_back(bar); 最佳答案 不,Derived对象将是sliced:所有额外的成员都将被丢弃。使用std::vector>而不是原

C++ 继承 : Calling Base Class Constructor In Header

假设类Child是类Parent的派生类。在一个五文件程序中,我如何在Child.h中指定我想调用Parent的构造函数?我认为header中的以下内容不合法:Child(intParam,intParamTwo):Parent(Param);在这种情况下,Child.cpp的构造函数语法应该是什么样的? 最佳答案 在Child.h中,您只需声明:Child(intParam,intParamTwo);在Child.cpp中,您将拥有:Child::Child(intParam,intParamTwo):Parent(Param){

javascript - 如果无法分配内存,V8 会崩溃吗?这会使整个过程崩溃吗?

这个问题类似于oneIrecentlyaskedaboutLLVM.V8在手动管理的堆上分配JavaScript对象,其内存最终是从mmap/VirtualAlloc(在Linux/Windows上)获得的。但是,对于其内部数据结构,V8usesC++standardcontainerssuchasstd::vector.如果这些容器需要分配内存但无法分配,它们通常会抛出std::bad_alloc。但是,V8iscompiledwith-fno-exceptions.如果不能使用异常,V8如何处理内部数据结构无法分配内存的情况?它会崩溃吗?如果是这样,这是否会取消任何嵌入V8的进程?

V8 的 JavaScript 标准库

在我的应用程序中,我允许用户使用JavaScript编写插件。为此,我嵌入了V8。问题是开发人员不能使用HTTP、套接字、流、定时器、线程、密码学、单元测试等。我搜索了StackOverflow并找到了node.js。它的问题是您实际上可以创建HTTP服务器,并启动进程和更多我不想允许的事情。另外,node.js有自己的环境(./nodescript.js),不能嵌入。而且它不支持Windows-我需要它是完全跨平台的。如果这些问题能够得到解决,那就太好了:)但我也对其他框架持开放态度。有什么想法吗?谢谢! 最佳答案 有Common

javascript - 如何使用 V8 从 C++ 访问和调用 Javascript 对象属性和方法?

我想要一个示例,说明如何使用v8引擎从C++访问和调用Javascript对象属性和方法。该文档展示了如何通过javascript而非其他方式访问C++对象和函数。这是一个简单的JS对象构造函数和实例:functionMyObj(){this.myArray=[];this.myDouble=0;this.myFunction=function(arg1,arg2){return(myDouble+arg1+arg2);}}varglobalObject=newmyObj();我如何访问globalObject的属性和方法?还有一个有点相关的问题——如何从C++填充数组(globalO

c++ - 为什么在异常掩码未设置为 eofbit 时 getline() 抛出 'std::ios_base::failure'?

考虑以下代码:ifstreamin;try{in.exceptions(ifstream::failbit|ifstream::badbit);in.open(pConfLocation);}catch(ifstream::failuree){throwstd::runtime_error("Can'topenconfigurationfile\n");}vectorlns;strings;in.clear();while(!in.eof()){getline(in,s);boost::algorithm::trim(s);lns.push_back(s+='\n');}所以:我根据t

c++ - Clang claims that `member reference base type ' X' is not a structure or union`,但 X 是具有推导参数的结构模板

考虑以下代码:templatestructX{X(T){}voidfoo(){}};templatestructY{intobject=0;voidbar(){X(object).foo();}};Liveongcc.godbold.orgGCC8.2编译它,而Clang7吐出以下错误::13:18:error:memberreferencebasetype'X'isnotastructureorunionX(object).foo();~~~~~~~~~^~~~这对我来说像是一个错误。条件非常具体:如果任一结构不是模板,或者object不是成员变量,或者不涉及CTAD(类模板参数推导