小编Vec*_*tor的帖子

是否可以在constexpr中使用std :: string?

使用C++ 11,Ubuntu 14.04,GCC默认工具链.

此代码失败:

constexpr std::string constString = "constString";
Run Code Online (Sandbox Code Playgroud)

错误:constexpr变量'constString'的类型'const string {aka const std :: basic_string}'不是文字...因为......'std :: basic_string'有一个非平凡的析构函数

是否有可能使用std::stringconstexpr?(显然不是......)如果是这样,怎么样?是否有另一种方法在一个字符串中使用字符串constexpr

stdstring constexpr c++11

142
推荐指数
5
解决办法
8万
查看次数

C++ 14是否在C++中添加了新的关键字?

C++标准委员会倾向于回避在该语言中添加新的关键字,但C++ 11并非如此.一些例子:

constexpr
decltype
thread_local
auto // New usage
noexcept
nullptr
static_assert
alignof
alignas
Run Code Online (Sandbox Code Playgroud)

C++ 14是否引入了新的关键字?

c++ keyword c++11 c++14

103
推荐指数
3
解决办法
1万
查看次数

声明中的新C++ 11成员初始化功能是否使初始化列表过时了?

使用C++ 11,我们现在可以在头声明中初始化类成员:

class aClass
{
    private:
        int mInt{100};
    public:
         aClass();
        ~aClass();
};
Run Code Online (Sandbox Code Playgroud)

所以我有点困惑.传统上,构造函数中的初始化列表已用于成员初始化:

aClass::aClass()
: mInt(100)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

声明中的新C++ 11成员初始化功能是否使初始化列表过时了?如果没有,一个优于另一个的优势是什么?什么情况会使声明初始化有利,或初始化列表有利?应该何时使用另一个?

c++ constructor initialization declaration c++11

68
推荐指数
3
解决办法
4万
查看次数

为什么Go中不经常使用列表?

我是Go的新手,对此非常兴奋.但是,在我广泛使用的所有语言中:Delphi,C#,C++,Python - 列表非常重要,因为它们可以动态调整大小,而不是数组.

在Golang中,确实存在一个list.List结构体,但我看到很少有关于它的文档 - 无论是Go Go Example还是我所拥有的三本Go书 - Summerfield,Chisnal和Balbaert--它们都花费大量时间在数组和切片上然后跳到地图.在源代码示例中,我也发现很少或没有使用list.List.

与Python不同,它似乎Range也不支持List - 大缺点IMO.我错过了什么吗?

切片当然很好,但它们仍然需要基于硬编码大小的数组.这就是List的用武之地.有没有办法在没有硬编码数组大小的Go中创建数组/切片?为什么List被忽略了?

arrays list go

65
推荐指数
6
解决办法
6万
查看次数

公共,私人 - 大写,小写:

来自Delphi的GoLang新手,C++:

我第一次尝试在Go中创建自己的包,我遵循了有关如何布局工作空间等的所有说明,但我一直在收到编译器错误:

./myPackage.go:52: undefined: myFunc
Run Code Online (Sandbox Code Playgroud)

稍微探讨一下后,我发现Go中的公共访问修饰符只需通过大写声明一个函数即可实现.大.

但是当我开始尝试容器类时 - List对于初学者,我发现我必须声明一个List引用返回值,如下所示:

func GetFactors(value *int64) *list.List {...
Run Code Online (Sandbox Code Playgroud)

*list 是小写的.

当我声明对列表的本地引用时 - 我必须使用:

l := list.New()
Run Code Online (Sandbox Code Playgroud)

再次,小写的list.

所以,我很困惑.规则是什么?列表调用和引用显然是公开的,或者我无法调用/使用它们 - 所以为什么它们是小写的?

private public access-modifiers case-sensitive go

41
推荐指数
3
解决办法
4万
查看次数

如何使用std :: shared_ptr实现多态?

我已经看到了关于这个主题的一些其他问题,但仍然没有找到答案 - 我想我错过了一些东西:

我定义了两个简单的测试类:

class TestBase
{

  public:

    TestBase ( ) { };
    ~ TestBase ( ) { };

  protected:

    inline virtual int getInt ( )
    {
        return 0;
    }

};

class TestDerived : public TestBase
{

  protected:

    inline int getInt ( ) override
    {
        return 1;
    }

};
Run Code Online (Sandbox Code Playgroud)

我声明了typedef来简化它们的使用 std::shared_ptr:

typedef std::shared_ptr<TestBase> spBase;
typedef std::shared_ptr<TestDerived> spDerived;
Run Code Online (Sandbox Code Playgroud)

问题:我无法编译代码以shared_ptr多态方式使用这些声明,即使base在所有这些情况下实际上是一个实例spDerived:

spBase base;
spDerived derived = static_cast < spDerived > ( base );
Run Code Online (Sandbox Code Playgroud)

错误:没有匹配函数来调用'std :: shared_ptr :: …

polymorphism gcc casting shared-ptr c++11

15
推荐指数
1
解决办法
8838
查看次数

没有XML绑定的XSD到Delphi类

也许以前曾经问过这个问题,但是我还没有找到关于Delphi的问题 - 我在Visual Studio中使用了一个XSD.exe来实现这一点:将XSD转换为代表XSD中指定实体的"普通香草"类 -未绑定到XML文档 - 用于在XSD中创建结构的类,而不是访问符合XSD中概述的结构的数据.

我正在寻找一个可以做到这一点的实用程序或产品(不花大价钱......):例如,我有这样的架构:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:element name="TDelphiClass">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="ID"/>
                <xs:element ref="ConnectionString"/>
                <xs:element ref="Group"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="ID" type="xs:integer"/>
    <xs:element name="ConnectionString" type="xs:string"/>
    <xs:element name="Group"type="xs:double"/>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)

我想生成一个如下所示的Delphi单元/类:

unit uDelphiClass;

interface

uses
  Classes, SysUtils;

type
  TDelphiClass = class(TObject)
    fID: Integer;
    fConnectionString: string;
    fGroup: Double;
  end;

implementation

end.
Run Code Online (Sandbox Code Playgroud)

xml delphi xsd code-generation

13
推荐指数
1
解决办法
9491
查看次数

在Python字典中查找值的键:

相当新的Python,仍然在努力应对如此多的信息.

我所看到的关于词典的所有文档都解释了通过键获取值的各种方法 - 但我正在寻找一种相反的pythonic方法 - 通过值获取键.

我知道我可以遍历键并检查它们的值,直到找到我正在寻找的值,然后抓住键,但我正在寻找直接路线.

python dictionary key

13
推荐指数
2
解决办法
4万
查看次数

XSD架构中的元素强制属性声明:

我想声明一个要包含在复杂类型声明中的元素,并且该元素具有强制属性:"option = MyOption",但"option"属性的值可以是任何值,具体取决于上下文.

也就是说:在使用包含此元素的复杂类型的任何文档中,具有某些未知值的属性"选项"应该是必需的.

例:

    <xs:element name="SpecialOption" type="xs:string"/>

    <xs:complexType name="SpecialOptions">
        <xs:sequence>
            <xs:element ref="SpecialOption" minOccurs="1" maxOccurs="100"/>
            <xs:element ref="XXX"/>     
        </xs:sequence>
    </xs:complexType>   
Run Code Online (Sandbox Code Playgroud)

在这种情况下,复杂类型"SpecialOptions"中的"SpecialOption"元素应具有此必需属性.

我不知道如何在XSD中声明元素的强制属性,或者如何指定属性必须具有尚未知的值.

xsd

12
推荐指数
2
解决办法
3万
查看次数

constexpr比const更"恒定"吗?

C++编程语言第四版 - Bjarne Stroustrup :(强调我的)

2.2.3.常量

在少数地方,语言规则需要常量表达式(例如,数组边界(§2.2.5,§7.3),案例标签(§2.2.4,§9.4.2),一些模板参数(§25.2),以及使用constexpr声明的常量).在其他情况下,编译时评估对性能很重要. 与性能问题无关,不可变性(具有不可更改状态的对象)的概念是一个重要的设计问题(第10.4节).

似乎Stroustrup在这里建议constexpr确保一个对象的不变性比传统的const声明更好.它是否正确?是否有方法,使constexpr可以更安全/比不易挥发const,或不斯特劳斯只意味着因为有很多方法可以使用constexpr不与支持const(见是constexpr真正需要的?),在这种情况下不变性可以使用保证constexpr

const immutability constexpr c++11

11
推荐指数
2
解决办法
1814
查看次数