草庐IT

c++ - 处理自定义异常的类

我想创建一个采用std::function并允许处理指定异常的类,但我不确定是否可行。这是一个伪草稿://exceptiontypestemplateclassCustomExceptionHandler{public:CustomExceptionHandler(std::functionclb):clb_(std::move(clb)){}voidExecuteCallback(){try{clb_();}/*catchspecifiedexceptiontypes*/}private:std::functionclb_;};//usageCustomExceptionHandle

c++ - 如何将非成员函数与 Doxygen 中的类相关联?

我确信有一些方法可以用\defgroup、\addgroup和\@{\@}标签来做到这一点,但经过几个小时的试验和(显然)错误,我问SO.....我有:classC{public:voidfoo()const;};我有一些帮助非成员函数,它们确实是C接口(interface)的一部分,但不在类中:std::stringformat(constC&c,conststd::string&fmt);我希望格式函数与类函数出现在同一页面上。那是不可能的吗?我能做的最好的是“模块”页面,它将C列为一个类(带有指向C注释的超链接,并将格式设置为函数? 最佳答案

c++ - 具有许多成员的类(class)的最佳做法

关于在C++中组织类成员(尤其是当有很多成员时)的最佳方式的任何意见。特别是,一个类有很多用户参数,例如一个优化某些函数并具有参数数量的类,例如迭代次数、优化步骤的大小、使用的特定方法、优化函数权重等。我尝试了几种通用方法,似乎总能找到一些不理想的东西它。只是好奇别人的经历。类内结构类外结构公共(public)成员变量带有Set()和Get()函数的私有(private)成员变量更具体地说,我正在处理的代码会跟踪一系列图像中的对象。所以一个重要的方面是它需要在帧之间保留状态(为什么我不只是制作一堆函数)。重要的成员函数包括initTrack()、trackFromLastFrame()

c++ - 如何初始化具有默认值的类的函数参数

我在Linuxgcc环境中工作,我需要初始化具有默认值的类的函数参数。当我使用类的临时实例执行此操作时,会出现如下错误:“[函数参数]的默认参数具有类型[类名]。例如:voidfoo(std::wstring&str=std::wstring())错误:“std::wstring&str”的默认参数类型为“std::wstring”附言此代码使用VC++编译时没有任何错误或警告。如何初始化默认值? 最佳答案 这应该不会编译。您正在尝试将右值绑定(bind)到非常量引用。说std::wstringconst&str它应该可以工作。

c++ - C++ 中的类/函数顺序重要吗?

我开始学习C++。在IDE代码块中,编译:#includeusingnamespacestd;structA{};structB{Aa;}voidhi(){cout但这不是:structB{Aa;}structA{};intmain(){hi();return0;}voidhi(){cout它给了我错误:error:'A'doesnotnameatypeerror:'hi'wasnotdeclaredinthisscopeC++中的类/函数顺序是否重要?我以为没有。请澄清问题。 最佳答案 是的,您至少必须在使用/调用类/函数之前声明

C++ dynamic_cast 转发声明的类模板编译,但它安全吗?

以下代码在(GCC和clang)中编译并给出预期的结果:templatestructDerived;structBase{templatevoidfoo(T*constt){dynamic_cast*const>(this)->bar(t);}};templatestructDerived:Base{voidbar(Tconst*)const{}};代码将对Base中的foo的调用分派(dispatch)到Derived中的bar。作为引用,以下代码无法编译:structDerived2;structBase2{templatevoidfoo(T*constt){dynamic_cas

c++ - 避免使用带有默认参数的类模板的括号

我有一个类似于下面的类模板,旨在包含解析CSV文件时使用的一些配置设置:templateclassicsv_params{//Iteratortoadatastructurecontainingthecolumns//thatshouldberead.typedefInputIteratoriterator;//Thisisabitmasktype.typedefdetail::icsv_opicsv_op;staticconsticsv_opnoqt=icsv_op(detail::csv_flags::noqt);staticconsticsv_opquot=icsv_op(det

kotlin - 我可以将 Kotlin 文件生成的类的默认构造函数设为私有(private)吗?

如果我创建一个Kotlin文件MyTest.ktpackagemy.testfunsayHello():String="Hello"将生成一个类MyTestKt,可以像这样从java访问它:MyTestKt.sayHello()//Returns"Hello"MyTestKtmyTestKt=newMyTestKt()//Instantiate我想将该构造函数设为私有(private)。那可能吗?如果有,怎么做?我知道我可以使用object来创建单例,这不是我的问题。我知道我可以创建一个包含companionobject的类,这也不是我的问题。 最佳答案

kotlin - 我可以将 Kotlin 文件生成的类的默认构造函数设为私有(private)吗?

如果我创建一个Kotlin文件MyTest.ktpackagemy.testfunsayHello():String="Hello"将生成一个类MyTestKt,可以像这样从java访问它:MyTestKt.sayHello()//Returns"Hello"MyTestKtmyTestKt=newMyTestKt()//Instantiate我想将该构造函数设为私有(private)。那可能吗?如果有,怎么做?我知道我可以使用object来创建单例,这不是我的问题。我知道我可以创建一个包含companionobject的类,这也不是我的问题。 最佳答案

c++ - 包含非平凡成员 union 的类的构造函数和复制构造函数

我正在尝试实现一个自定义变体类型,它使用union来存储各种不同类型的数据。在字段type_id中我打算存储union中存储的数据是哪种类型。union包含非平凡的成员。这是我当前的实现:structMyVariant{enum{t_invalid,t_string,t_int,t_double,t_ptr,t_dictionary}type_id;union{intas_int;doubleas_double;std::stringas_string;std::unique_ptras_ptr;std::mapas_dictionary;};};我尝试创建一个MyVariant的实例