草庐IT

default-public

全部标签

c++ - 将公共(public)接口(interface)与实现细节分开

我必须设计一个Font类,该类将具有跨平台或不同库(例如Win32GDI或FreeType)的多个实现。所以基本上会有单个共享头文件/接口(interface)文件和多个.cpp实现(在构建时选择)。我宁愿保持公共(public)接口(interface)(头文件)不受任何实现细节的影响,但这通常很难实现。字体对象必须拖动某种私有(private)状态-如GDI中的句柄,或内部的FreeType面部对象。在C++中,跟踪私有(private)实现细节的最佳方法是什么?我应该在实现文件中使用静态数据吗?编辑:发现这篇关于该主题的精彩文章:SeparatingInterfaceandImp

c++ - 带有 std::enable_if 和 std::is_default_constructible 的 SFINAE 用于 libc++ 中的不完整类型

我刚刚在使用SFINAE检测模板类型是否默认可构造时观察到libc++的一个奇怪问题。以下是我能够想出的一个最小示例:#include#includetemplatestructDummy;templatestructDummy{};templatestructhas_dummy:std::false_type{};templatestructhas_dummy>::value>>:std::true_type{};intmain(){std::cout{}(){}()它编译并输出预期的行true和false使用libstdc++使用g++或clang++编译时.但是,当我尝试使用li

c++ - 您自己的类型的结构化绑定(bind)不是结构或元组(通过公共(public)成员函数)

我正在浏览HerbSutter的旅程:走向更强大、更简单的C++编程StructureBinding节为了理解这个概念。最好是写一个我试过但出现一些错误的程序Justwanttotryhowtousestructurebindingonclasswithprivatedata.Pleaseignorethebelowexample.ifanyexampleyoucanprovide#include#includeusingnamespacestd;classfoobar{public:foobar(){coutstructtuple_element{usingtype=int;};te

c++ - 是否建议指定例如vector<t> 在我的公共(public)界面?

我是C++的新手,在编写一个类时,我意识到我的方法之一是要求vector中的vector。应该这样做还是应该重新考虑我类(class)的界面?(如何?) 最佳答案 我觉得你用什么容器都没有问题。你可以这样做voidfunc(std::vector>const&int_matrix);或在C++11中,连续的>不会被视为“>>”,因此您也可以使用voidfunc(std::vector>const&int_matrix);但问题是,如果您的作品以二进制而不是源代码的形式发布,那么接口(interface)的用户应该拥有与您相同的STL

c++ - 添加公共(public)变量时崩溃

我有一个相当大的c++程序,包括一个类“Character”。在“Character.h”中,首先声明了CharacterSettings结构,然后是Character类(包括它们的构造函数)。Character具有(除其他外)CharacterSettings*设置和Pointpos。CharacterSettings有一个PointpreferredVelocity。这很好用。但是,当我将任何公共(public)变量添加到Character时,程序会在我调用此命令时崩溃:drawLine(character.pos,character.pos+character.settings-

c++ - 所有公共(public)结构产生对隐式删除的默认构造函数的调用

我明白调用隐式删除的默认构造函数是什么意思,但我不明白为什么我会在这里得到它:structTransformData{enumtype_t{kDelay=0,kScale,kTranslate,kRotation}type;uniondata_t{doubledelaySeconds;floatscale;floatrotation;vec3translate;}data;};然后我有:TransformData数据;//生成标题中指出的错误POD不应该有编译器提供的简单默认构造函数吗? 最佳答案 如前所述,Vector3是非POD

c++-default_random_engine 始终创建相同的数字系列

我正在使用神经网络,我想随机创建权重。因此,如果我创建30个神经网络,它们中的每一个最终都具有相同的权重(应该是随机的),所以当我给它们所有相同的输入时,输出是相同的,而在不应该的时候。有帮助吗?这里是主要功能intmain(){std::vectorv;std::random_devicerd;std::default_random_enginegenerator(rd());std::uniform_real_distributiondistribution(-1.0,1.0);for(inti=0;iinitialize_weights在这里:voidImproved_NN::i

c++ - 从两个 vector 中删除公共(public)实体?

假设我有vector,vector如何从它们中删除公共(public)实体我已经为class1对象class1a,class1b定义了==operator 最佳答案 stlalgorithms提供几个函数来执行集合操作,特别是计算setsymmetricdifference,这就是您所需要的。这是一个使用示例:#include#includeintmain(intargc,char**argv){std::vectorv1;v1.push_back(1);v1.push_back(2);v1.push_back(3);v1.push

C++ 标准 : default "const T& value" in vector constructor for type 'int'

explicitvector(size_typen,constT&value=T(),constAllocator&=Allocator());vectorvec(10);cout::const_iteratoriter=vec.begin();iter!=vec.end();++iter){coutVS2010的输出:vec.size:100000000000问题>:根据最新的C++标准,当我们使用vectorObject(size_type)定义一个vector对象时,默认的int值是多少?在这里你可以看到,VS2010输出0作为默认的int值。但我不知道这是否是C++标准所要求的

c++ - 在公共(public)成员函数中返回私有(private) unique_ptr

考虑以下类原型(prototype):classObjHandler{std::unique_ptrGetPtr(){returnobj;}private:std::unique_ptrobj;};这会生成一个编译时错误,说明std::unique_ptr的复制构造函数已被删除。为什么这里不应用移动语义?是否与GetPtr()不拥有obj指针有关?我应该如何实现我的代码(我需要一个成员函数以最小的开销返回一个指向流的拥有指针)? 最佳答案 unique实际上意味着“独特的所有权”。创建所有权的拷贝是没有意义的,因为那样它就不再是唯一