相关疑难解决方法(0)

在C++标识符中使用下划线有哪些规则?

在C++中通常用某种前缀命名成员变量来表示它们是成员变量而不是局部变量或参数.如果你来自MFC背景,你可能会使用m_foo.我myFoo偶尔也见过.

C#(或者可能只是.NET)似乎建议只使用下划线,如_foo.这是否允许C++标准?

c++ standards naming-conventions c++-faq

906
推荐指数
4
解决办法
24万
查看次数

如何在C++中编写具有多个数据字段的类Java-enum类?

来自Java背景,我发现C++的枚举非常蹩脚.我想知道如何在C++中编写类似Java的枚举(枚举值是对象,可以有属性和方法).

例如,将以下Java代码(其中一部分,足以演示该技术)转换为C++:

public enum Planet {
    MERCURY (3.303e+23, 2.4397e6),
    VENUS   (4.869e+24, 6.0518e6),
    EARTH   (5.976e+24, 6.37814e6),
    MARS    (6.421e+23, 3.3972e6),
    JUPITER (1.9e+27,   7.1492e7),
    SATURN  (5.688e+26, 6.0268e7),
    URANUS  (8.686e+25, 2.5559e7),
    NEPTUNE (1.024e+26, 2.4746e7);

    private final double mass;   // in kilograms
    private final double radius; // in meters
    Planet(double mass, double radius) {
        this.mass = mass;
        this.radius = radius;
    }
    private double mass()   { return mass; }
    private double radius() { return radius; }

    // universal gravitational constant  (m3 kg-1 s-2)
    public static final …
Run Code Online (Sandbox Code Playgroud)

c++ java enums

54
推荐指数
2
解决办法
1万
查看次数

在编译时使用Constexpr填充数组

我想使用constexpr填充一个枚举数组.阵列的内容遵循某种模式.

我有一个枚举将ASCII字符集分为四类.

enum Type {
    Alphabet,
    Number,
    Symbol,
    Other,
};

constexpr Type table[128] = /* blah blah */;
Run Code Online (Sandbox Code Playgroud)

我想有一个128的数组Type.它们可以是一个结构.数组的索引将对应于ASCII字符,值将是Type每个字符的值.

所以我可以查询这个数组,找出ASCII字符属于哪个类别.就像是

char c = RandomFunction();
if (table[c] == Alphabet) 
    DoSomething();
Run Code Online (Sandbox Code Playgroud)

我想知道如果没有一些冗长的宏观黑客,这是否可行.

目前,我通过执行以下操作来初始化表.

constexpr bool IsAlphabet (char c) {
    return ((c >= 0x41 && c <= 0x5A) ||
            (c >= 0x61 && c <= 0x7A));
}

constexpr bool IsNumber (char c) { /* blah blah */ }

constexpr bool IsSymbol (char c) { /* blah blah */ } …
Run Code Online (Sandbox Code Playgroud)

c++ templates constexpr c++11

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

如何在c ++中读取二进制数据?

我需要用C++读写二进制数据.我使用from ofstreamifstreamclasses但它不能读取像9,13,32这样的字符.如果有另一种方法来读写主题.

c++ file-io

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

声明嵌套命名空间`std`是合法的C++吗?

std命名空间是C++特殊,所以......

这是合法的C++吗?

// at global scope
namespace mine {
  namespace std {
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

我称之为疯狂,但允许吗?

可以理解标准的参考(或非参考).

c++ namespaces language-lawyer

5
推荐指数
2
解决办法
307
查看次数

如何在C++函数中返回数组?

我是一个C++菜鸟,我想知道如何从C++函数返回一个数组.
我尝试了以下代码,但似乎没有用.

char some_function(){
    char my_string[] = "The quick brown fox jumps over the lazy dog";
    return my_string;
}
Run Code Online (Sandbox Code Playgroud)

c++

4
推荐指数
1
解决办法
1267
查看次数

我应该更改使用push_back来使用std :: move的代码吗?

我刚刚阅读了关于rvalue引用的内容,下面是我所指的代码

vector<string> v;
string s = "hello";   

v.push_back(s); 
cout << s << endl;
cout << v[0] << endl;
return 0
Run Code Online (Sandbox Code Playgroud)

我的问题是,到目前为止,每当我看到对象(或字符串)的向量时,我主要看到插入操作如上所述.相反,如果我这样做,v.push_back(std::move(s))那么我不会不必要地创建重复的对象.

这应该是向STL添加对象的正确方法,我们关心的只是容器中的数据而不是其他变量.

c++ stl stdmove

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

C++:命名空间语法问题

namespace Stuff
{
    class Sprite
    {
    };

    class Circle : Stuff::Sprite
    {
    };
}
Run Code Online (Sandbox Code Playgroud)

这会工作,还是会找到Stuff :: Stuff :: Sprite?

编辑:忘了一些分号.

编辑2:我接受了@Omnifarious的答案,因为一旦他用@ Vlad的帮助编辑了它,这是最完整的答案.还要感谢@Vlad.

c++ namespaces naming-conventions

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