标签: initializer

在 C 数组 init 中混合字符和字符串

我知道以下两个初始化器是等效的:

char T1[]="abc";
char T2[]={'a', 'b', 'c', 0};
Run Code Online (Sandbox Code Playgroud)

我有一个像这样的数组初始值设定项:

char T[]={0x10, 0xF, 0xF0, 'H', 'e', 'l', 'l', 'o', 0xC1, 0xD0};
Run Code Online (Sandbox Code Playgroud)

撇开有符号/无符号字符的潜在问题不谈,有没有办法混合两种风格的初始化器,做类似的事情(这不起作用):

char T[]={0x10, 0xF, 0xF0, "Hello", 0xC1, 0xD0};
Run Code Online (Sandbox Code Playgroud)

c arrays initializer

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

Unity C#脚本字典初始化器不属于C#4.0语言规范

我在Unity项目的代码中重复出现以下错误

Assets / App / Models / AnnotationModel.cs(39,17):错误CS1644:无法使用功能“字典初始化程序”,因为它不属于C#4.0语言规范

以下是触发这些错误块的代码:

["CameraPose"] = ConvertToken(CameraPose),
["Aspect"] = Aspect,
["Image"] = Image.Id,
["Fov"] = Fov,
["IsAnchored"] = IsAnchored,
["AnchorPosition"] = ConvertToken(AnchorPosition),
["DrawLines"] = ConvertToken(DrawLines),
["SurfaceDrawLines"] = ConvertToken(SurfaceDrawLines)
Run Code Online (Sandbox Code Playgroud)

初始化C#词典的新方法是什么?我尝试(未成功)在C#4.0语言规范中找到初始化的更新版本。
如果有帮助,下面的代码显示这些对象是什么

public Pose CameraPose;
public float Aspect;
public ImageModel Image;
[Range(0, 120)] public float Fov = 60;
public bool IsAnchored;
public Vector3 AnchorPosition;
public List<List<Vector2>> DrawLines;
public List<List<Vector3>> SurfaceDrawLines;  
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激!我对Unity和C#完全陌生。

c# dictionary initializer unity-game-engine

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

什么是支撑或等于初始化器?

我知道这个问题很简单,但是很简单,我没有找到任何资源来定义什么是"支撑或平等".

那些是所有支撑或等于初始化器吗?

++++++++++++++++++++++++++++++++++++++

int foo= 42;

int foo{42};

int foo= {42};

int foo[]{41,42,43};

int foo[]={41,42,43};

struct Foo{
    int data= 42;
};
Run Code Online (Sandbox Code Playgroud)

考虑到上述结构,在两种情况下都是data初始化或不是初始化:

Foo foo{42}
Foo foo= {42}
Foo foo{.data=42}
Foo foo= {.data=42}
Run Code Online (Sandbox Code Playgroud)

++++++++++++++++++++++++++++++++++++++

c++ initializer

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

为什么 GCC 不将静态初始化的 C++ 类对象放入 .data

以下是 C++ 中对象类型的两个类似声明:

struct Obj {
    int x;
};

struct ObjC {
    int x;
    ObjC(int x) : x(x) {};
};

Obj obj1 = {100}
ObjC obj2(200);
Run Code Online (Sandbox Code Playgroud)

使用最新版本的 gcc ( riscv64-unknown-elf-toolchain-10.2.0-2020.12.8) 我发现变量obj1正确地放置在该部分中......但是,.data该变量被放置在初始化的部分中......obj2.bss

我知道 GCC 有规定在启动时运行构造函数;但在这种情况下,初始状态obj2在编译时是已知的......

FWIW,我的 IAR 编译器对这段代码没有问题......

我需要向 GCC 提供某种“提示”吗???

c++ static gcc initializer

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

结果类型的初始值设定项失败?

我有一个结构MyStruct。它可以从字符串初始化,但是有很多方法会导致字符串无效。我不想简单地创建一个在所有失败情况下init?(string: String)返回相同的可失败初始化程序nil,而是希望有一个返回 Result 类型的初始化程序,Result<MyStruct, Error>以便调用方法可以知道发生了哪种失败情况并报告信息性错误。

我可以写一个方法static func makeNew(string: String) -> Result<Self, Error>。这样就不用打电话了

guard let new = MyStruct(string: someString) else {
   print("\(someString) was invalid somehow.")
}
print("Object created.)
Run Code Online (Sandbox Code Playgroud)

我可以makeNew这样调用:

switch MyStruct.makeNew(string: someString) {
case .success(let new):
   print("Object created")
case .failure(let error):
   switch error {
      // handle each specific error appropriately
   }
}
Run Code Online (Sandbox Code Playgroud)

这是唯一的方法,还是 Swift 给了我们一个实际的初始化器来做到这一点?

initializer resulttype swift failable

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

如何对C++数组进行值初始化?

1)在C++中,提供的初始化列表{}是一样的{0}吗?声明是:

int x[10]={};

int x[10]={0};

两个都生成相同的数组,所有元素都初始化为0?

2)在NULL不为0的系统/编译器上,指针数组的默认值初始化是将元素设置为NULL还是0?应该/可以使用以下哪些陈述?

int *x[10]={NULL};

int *x[10]={0};

int *x[10]={};

如何new使用空括号的值初始值设定项 - 它们是使用NULL还是0作为初始值设定项?

int **x=new int*[10]();

c++ default initializer

0
推荐指数
1
解决办法
144
查看次数

如何调用非静态初始化程序块?

public class A{

    {
        System.out.println("hi i am IIB");
    }

    public A(){
        System.out.println("hi i am constructor");
    }

    public static void main(String... args){
        A objA=new A();
    }

}
Run Code Online (Sandbox Code Playgroud)

java initialization initializer non-static

0
推荐指数
1
解决办法
168
查看次数

初始化列表

point2d是一个包含两个双变量x和y的结构.

Projectile::Projectile(Point2D p1, double x1, double y1){
    : xVel(x1), yVel(x1), pos.x(p1.x), pos.y(p1.y) { } 
}
Run Code Online (Sandbox Code Playgroud)

提供一条错误消息,说明预期的表达式:任何想法,而不是数据类型的问题,因为所有的都是双倍的?

c++ initializer

0
推荐指数
1
解决办法
35
查看次数

使用添加的属性创建UIImage的子类

我正在尝试使用添加的属性创建UIImage的子类,但是当我创建一个方便的init时,我无法调用UIImage的指定init init(命名为name:String),因为由于某种原因它不会被继承.

class myUIImage: UIImage {
    var imageType$: String?
    convenience init(imageName$ imageName$: String) {
        self.init(...?)
        self.imageType$ = // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

inheritance initializer uiimage swift

0
推荐指数
1
解决办法
3030
查看次数

为什么我不能在实例初始化程序块中使用最终字段?

从Oracle的指南,Initializing Fields(强调我的):

Java编译器将初始化程序块复制到每个构造函数中.因此,该方法可用于在多个构造函数之间共享代码块.

另外,来自DOJ的关于Java中的实例初始化器的文章(强调我的):

实例初始化块代码在构造函数中调用super()之后运行,换句话说,在所有超级构造函数运行之后运行.

考虑到这一点,为什么我的编译器每次尝试在实例初始化程序块中使用(已分配的)最终字段时都会发出警告,如下所示?

final class PpTitleBook implements TitleBook {
  private final Resources resources;
  private final Log log;

  PpTitleBook(Resources resources, Log log) {
    this.resources = resources;
    this.log = log;
  }

  {
    String[] resTitles = resources.getStringArray(R.array.titles);

    if (book().getAllKeys().isEmpty()) {
      for (int i = 0; i < resTitles.length; i++) {
        newTitle(resTitles[i]);
      }
    }
  }
Run Code Online (Sandbox Code Playgroud)

除了上面显示的那个之外,我没有其他构造函数.那警告背后的真正原因是什么?

java initializer

0
推荐指数
1
解决办法
38
查看次数