草庐IT

package-private

全部标签

c++ - 对于私有(private)继承,什么时候可以向上转型?

我有一个关于C++的私有(private)继承的问题。请参见以下代码示例:#includeclassFoo{public:virtualvoiddoSomething(intvalue){std::cout目前,我不明白(或找不到正确的C++规范)为什么可以在Bar的构造函数中使用调用函数foobar>*this尽管是私有(private)继承。如果我尝试在main函数中使用Bar对象b调用foobar函数,编译器会给出错误正如预期的那样,因为私有(private)继承。我忽略的foobar(*this,42)和foobar(b,42)之间有什么区别? 最佳

c++ - 使用元编程的私有(private)成员存在性测试,GCC vs clang,哪个是对的?

这更像是一个C++标准问题。考虑以下代码:templateclasshas_Data{typedefcharone;typedeflongtwo;templatestaticonetest(typeof(&C::Data));templatestatictwotest(...);public:enum{value=sizeof(test(0))==sizeof(char)};};classMyClass{private:structData{};};voidfunction(boolval=has_Data::value){}以上代码适用于gcc(GCC)4.4.3但是clang版本3

c++ - C++ 中的私有(private)基类可访问性

我最近不得不做这样的事情:classA{};classB:privateA{};classC:publicB{public:A*myA;};intmain(){return0;}而且我在尝试的三个编译器中都遇到了错误。当我将myA的声明更改为::A*myA时,一切正常。我查阅了C++标准,发现第11.2节第3段说:Note:Amemberofaprivatebaseclassmightbeinaccessibleasaninheritedmembername,butaccessibledirectly.哪个相关,但不清楚。为什么名称A不可访问?如果不隐藏A会出现什么问题?谢谢,-本

c++ - 将私有(private)函数覆盖到公共(public)函数的潜在危险是什么?

我刚刚发现在C++中允许将私有(private)函数从基对象覆盖为公共(public)函数,因为VisualStudio会产生0警告。这样做有什么潜在的危险吗?如果没有,在基础对象中声明一个私有(private)的、protected和公共(public)的虚函数有什么区别? 最佳答案 what'sthedifferencebetweendeclaringavirtualfunctioninprivate,protectedandpublicinabaseobject?不同之处在于,private虚函数只能从基类中调用。如果该函数不

c++ - 将 packaged_task 移动到 lambda

我想在lambda中移动并调用boost::packaged_task。但是,我想不出一个优雅的解决方案。例如这不会编译。templateautobegin_invoke(Func&&func)->boost::unique_future//noexcept{typedefboost::packaged_tasktask_type;autotask=task_type(std::forward(func));autofuture=task.get_future();execution_queue_.try_push([=]{try{task();}catch(boost::task_a

c++ - std::packaged_task 编译错误 w/gcc 4.6

我正在尝试使用std::packaged_task在线程中启动函数Queryquery;/*protobufobject*//*fillQueryobject*/std::packaged_tasktask([](Query&q)->SearchResults{index::core::Mergermerger;returnmerger.search(q);});std::futureftr=task.get_future();std::thread(std::move(task),query).detach();Edit2:再次更新代码以修复错误并包含完整的错误消息。g++-4.6(

c++ - QMake 模拟 cmake 的 "find_package"

qmake有没有类似cmake的find_package的机制?如果我需要在我的系统上安装包含库,我怎样才能避免手动编写包含路径和库名称?最佳做法是什么? 最佳答案 如果使用的库提供了pkgconfig.pc文件,您可以在.pro文件中使用link_pkgconfig作为:CONFIG+=link_pkgconfigPKGCONFIG+=quazip如果库提供命令行实用程序来获取编译器标志(如postgresql有),那么你可以调用它并将添加输出分配给相应的变量INCLUDEPATH+=$$system(pg_config--inc

c++ - std::packaged_task 是如何工作的

我正在分析以下代码片段并试图详细理解它:templateautoThreadPool::add(FUNCTION&&Function,ARGUMENTS&&...Arguments)->std::future::type>{usingPackedTask=std::packaged_task::type()>;autotask=std::make_shared(std::bind(std::forward(Function),std::forward(Arguments)...));//getthefuturetoreturnlaterautoret=task->get_future(

c++ - 我应该从私有(private)派生类指针转换到它的基类吗?

我从C++FAQ中找到的Generally,No.Fromamemberfunctionorfriendofaprivatelyderivedclass,therelationshiptothebaseclassisknown,andtheupwardconversionfromPrivatelyDer*toBase*(orPrivatelyDer&toBase&)issafe;nocastisneededorrecommended.HoweverusersofPrivatelyDershouldavoidthisunsafeconversion,sinceitisbasedonapr

c++ - C++ 中的私有(private)虚函数是否有通用的命名约定?

C++中的私有(private)虚函数是否有通用的命名约定?我见过do_something(...)、something_vfunc(...)等约定。C++项目中通常使用哪种约定? 最佳答案 标准中使用的约定(例如在许多std::numpunct中)是do_something是一个protectedvirtual方法,并且something是调用它的public非virtual方法。 关于c++-C++中的私有(private)虚函数是否有通用的命名约定?,我们在StackOverflo