草庐IT

BOOST_CLASS_EXPORT

全部标签

C++ : How to ensure that a class member variable is modifiable only within a certain method

我在MacOSSierra上使用带有clang的C++14。我想通过设计来执行规则。以下是规则。我的类中有一个成员变量说:unsignedintm_important_num;我的类中有4个方法。fun1();fun2();fun3();fun4();目标:我只希望fun2()能够更改m_important_num的值。问题:如果fun2()以外的任何方法更改变量,是否有可能使其成为编译器错误?一种可能的方法是将其声明为const以某种方式授权fun2()更改const变量?这是一个好的解决方案吗?或者他们有更好的解决方案吗?次要问题:尝试做这样的事情是错误的设计吗?

c++ - 同一个类(class),不同的尺寸......?

看代码,你就明白我的困惑了。测试.hclassTest{public:#ifndefHIDE_VARIABLEintm_Test[10];#endif};啊啊啊classTest;intGetSizeA();Test*GetNewTestA();Aho.cpp//#defineHIDE_VARIABLE#include"Test.h"#include"Aho.h"intGetSizeA(){returnsizeof(Test);}Test*GetNewTestA(){returnnewTest();}Bho.hclassTest;intGetSizeB();Test*GetNewTes

c++ - boost::thread 数据结构的大小在荒谬的一面?

编译器:clang++x86-64onlinux。自从我编写任何复杂的低级系统代码以来已经有一段时间了,而且我通常针对系统原语(windows和pthreads/posix)进行编程。所以,输入和输出已经从我的内存中消失了。我目前正在使用boost::asio和boost::thread。为了模拟针对异步函数执行器的同步RPC(boost::io_service具有多个线程io::service::run'ing,其中请求是io_serviced::post'ed),我正在使用升压同步原语。出于好奇,我决定sizeof原语。这就是我所看到的。structnotification_obj

c++ - 为什么boost::when_all会产生一个新线程

下面的代码是用boost1.62编译的。#defineBOOST_THREAD_VERSION4#defineBOOST_THREAD_PROVIDES_EXECUTORS#include#include#include#includeusingnamespacestd::literals::chrono_literals;intmain(){autostart=boost::make_ready_future();boost::loop_executorex;autoa=start.then(ex,[](auto&&){std::cout这会产生4个任务(a、b、c、d),它们之间有

c++ - boost mutex, condition, scoped_lock ,我在这里用错了吗?

classMyClass{public:voidPushMessage(MyMessagem)//Thread1callsthis{boost::mutex::scoped_locklock(mMutex);mQueue.push_back(m);mCondition.notify_one();}MyMessagePopMessage(){boost::mutex::scoped_locklock(mMutex);while(mQueue.empty())mCondition.wait(lock);MyMessagemessage=mQueue.front();mQueue.pop_f

c++ - 使用 boost 获取文件的所有者和组

我想使用boost::filesystem从文件中获取所有者和组,但从未找到任何方法。我可以获得文件的权限,但由于我不知道文件的所有者,所以这没有任何意义。我找到了posixfstat函数,但我还是想使用boost或其他C++库而不是C函数。 最佳答案 您要执行的是Unix系统调用。但是你不想调用它?为什么?boost可以提供什么可能的值(value)?这不是可移植性,因为Unix之外的任何东西都不会有有意义的st_gid字段。 关于c++-使用boost获取文件的所有者和组,我们在St

C++/boost::thread 程序在 join_all 后挂起并从 Main 返回

第一次在这里发帖,但是我已经彻底搜索了这个问题的解决方案,但没有解决方案。我有一个类,它基本上使用静态范围的线程池来计算矩阵的条目。当需要进行新的计算时,静态条件变量会发出信号。当程序结束时,一个静态bool标志被改变,主线程在退出前调用join_all。问题是当我从intmain()返回时,程序似乎在销毁静态变量期间挂起。这是执行计算的类的粗略源代码:classFunctionCalculator{public:staticvoidcreateWorkers();staticvoiddestroyWorkers();staticvoidcalcFunction();private:s

c++ - 在哪里可以找到可以在 cmake 中使用的 boost 组件列表?

我有一个cmake文件,可以像这样添加boost:if(ADD_BOOST)#addboostlibraryset(Boost_USE_STATIC_LIBSON)set(Boost_USE_STATIC_RUNTIMEON)file(TO_CMAKE_PATH$ENV{BOOST_ROOT}BOOST_ROOT)if(MSVC)set(BOOST_LIBRARYDIR${BOOST_ROOT}/lib64-msvc-12.0)else(MSVC)set(BOOST_LIBRARY_DIR$ENV{BOOST_ROOT})endif(MSVC)find_package(BoostCOM

c++ - 无法在 Boost.Python 中使用 __stdcall 编译示例

我正在尝试使用Boost.Python在Python中包装一个函数,但在使用__stdcall时我遇到了问题。这是一个例子:#defineBOOST_PYTHON_STATIC_LIB#defineBOOST_PYTHON_ENABLE_STDCALL#include#includevoid__stdcallf(void){return;}usingnamespaceboost::python;BOOST_PYTHON_MODULE(MyPyDLL){def("func",f);}当我尝试编译时,我遇到了100多个类似的错误,但前两个是:errorC2780:'boost::mpl::

c++ - Boost::bind 一个带有 boost::function 参数的方法

我想为async_write提供一个额外的boost::function。我希望首先调用连接自己的HandleWrite函数,然后调用提供的boost::function。绑定(bind)asioasync_write的Connection成员方法voidConnection::HandleWrite(constboost::system::error_code&e,boost::functionhandler){//Coderemovedforclarityif(!handler.empty())handler(e);};尝试将HandleWrite绑定(bind)到asioasyn