相关疑难解决方法(0)

在C++中初始化结构

作为这个问题的补充,这里发生了什么:

#include <string>
using namespace std;

struct A {
    string s;
};

int main() {
    A a = {0};
}
Run Code Online (Sandbox Code Playgroud)

显然,你不能将std :: string设置为零.有人可以提供一个解释(请参考C++标准,请参考)这里应该发生什么?然后解释一下):

int main() {
    A a = {42};
}
Run Code Online (Sandbox Code Playgroud)

这些都是明确界定的吗?

对我来说又一个令人尴尬的问题 - 我总是给我的结构构造者,所以这个问题从未出现过.

c++ struct

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

c ++使用数组作为成员初始化结构

再次编辑,因为我最初并不清楚我是否正在尝试在编译时初始化数组,而不是在运行时...


我有以下简化的测试用例:

typedef struct TestStruct
{
    int length;
    int values[];
};

TestStruct t = {3, {0, 1, 2}};
TestStruct t2 = {4, {0, 1, 2, 3}};

int main()
{
    return(0);
}
Run Code Online (Sandbox Code Playgroud)

这适用于Visual C++,但不能在linux下用g ++编译.任何人都可以帮助我使这种特定的初始化器可移植吗?

其他细节:我正在使用的实际结构有几个其他int值,并且数组的长度范围可以从单个条目到超过1800个条目.

编辑:我认为(但不确定)这不是VLA问题.为了澄清,我正在尝试让编译器在编译时为我完成工作.运行时数组的长度是不变的.如果我错了,请道歉; 我主要是ac#/ Perl/Ruby程序员,他们坚持维护这个遗留应用程序......

任何帮助非常感谢.谢谢!

c++ portability struct initialization

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

C++初始化匿名结构

我仍在赚取我的C++翅膀; 我的问题是,如果我有这样的结构:

struct Height
{
    int feet;
    int inches;
};
Run Code Online (Sandbox Code Playgroud)

然后我有一些像这样的行:

Height h = {5, 7};
Person p("John Doe", 42, "Blonde", "Blue", h);
Run Code Online (Sandbox Code Playgroud)

我喜欢通过花括号初始化结构,但我更喜欢上面的一行,在一个匿名的Height结构中.我该怎么做呢?我最初的天真方法是:

Person p("John Doe", 42, "Blonde", "Blue", Height{5,7});
Run Code Online (Sandbox Code Playgroud)

但这并没有奏效.我离标记太远了吗?

c++ struct anonymous-types

12
推荐指数
1
解决办法
8929
查看次数