reference 相关问题

引用是一个值,它使程序能够间接访问计算机内存或某些其他存储设备中的特定数据,例如变量或记录。

使用嵌套循环通过引用修改多维数组的第三层

我想将以下输入数组中的所有 0 值更改为 1 到 6 之间的随机数。 $_SESSION['diceRoll'] = [ ["save_1" => ["pos1" => 0, "pos2&q...

回答 2 投票 0

在这种情况下 g++ -Wdangling-reference 警告是否合理?

使用 gcc 13.2 和 -Wdangling-reference 编译我的代码,我很惊讶在这个简单的场景中(godbolt): #包括 #包括 std::string& add_variable(std::...

回答 1 投票 0

重写返回数组常量引用的类方法

我有这样的代码,其中 MyClass 派生自 iClass 接口,并有一个方法返回对成员数组 arr 的常量引用: #包括 类 iMyClass { 民众: ...

回答 1 投票 0

对嵌套数组进行索引 VS 使用对最深级别的引用?

给定一个深度嵌套的数组: $array = array('nested' => array('so' => array('deep' => array()))); ...哪个更快/“更好”? $array['nested']['so']['deep'][0] = 'a'; $array['嵌套']['...

回答 3 投票 0

带有自定义键的c++映射的大小为3,但只迭代2个元素?

我正在尝试以我的 struct Tenor 作为键创建一个有序映射。订购地图需要操作员< , so I define it for my struct (currently just a placeholder, always returns true - this seems to...

回答 1 投票 0

在Java中使用类内的方法修改类变量

下面的代码在二叉搜索树中插入新节点。 当我在驱动程序函数中创建 BinarySearchTree 类的对象并第一次使用其插入函数时,根

回答 1 投票 0

Powershell 将变量存储在哈希表中并稍后解析该值

首先我要说的是,我相当确定我没有使用正确的术语,所以请在需要时纠正我。 情况是这样的,我是一名业余无线电操作员,我有多个无线电可以编程......

回答 1 投票 0

从指针转换为 c 数组引用?

是否可以将分配的内存转换为对 c 数组的引用而不调用未定义的行为? 我在堆中有 4 个元素,希望将其视为 2x2 c 数组(传递给函数......

回答 1 投票 0

Python 对象之间的复制和绑定

给定一个矩阵,A 的大小为 M x N,由 0 和 1 组成。如果某个元素为0,则将其整行整列置为0。 输入1: [ [1, 0, 1], [1,1,1], [1,1,1]] 输出1: [ [0, 0...

回答 6 投票 0

Swift 绝对不会吗< deep copy a large array, when one "guard let" the array?

typealias Stuff = [[String]] // 通常有无数的项目 var stuff: [String: Stuff] = [:] // 几十个 当我深度复制†一个东西时, 备用:东西=原来的{ 让线= $0.map{ $0 } 重新...

回答 1 投票 0

有没有办法将 &str 包装为 &T(String) 而无需克隆?

在 Rust 中,我经常用自定义结构包装字符串,以消除特征行为的歧义。例如,我可能有一个名为 IGetByField 的数据访问特征,其实现方式如下...

回答 1 投票 0

delphi对象生存期,接口重新赋值(简单问题)

众所周知(???)Delphi 对接口对象的接口引用进行引用计数,并在引用计数降至零时销毁该对象,通常是因为所有相关接口...

回答 1 投票 0

无法加载文件或程序集“Newtonsoft.Json,Version=10.0.0.0” - 但是二进制文件存在于 bin 文件夹中

我试图在这里做一些非常简单的事情,而且我已经坚持了几个小时了。我觉得我已经用尽了几乎所有的选择。 我想做的就是: JsonConvert.SerializeObject(mo...

回答 3 投票 0

如何从RefCell<T>借用T作为参考?

有时我有一个包含包装在 RefCell 中的值的结构,我想借用该值,但我不想使访问器函数的签名依赖于内部

回答 1 投票 0

如何在javascript中比较两个变量是否引用同一个对象

我是 JavaScript 新手,正在接触扩展运算符。 据我所知,它将深层复制数组或对象的顶级元素,但浅层复制嵌套数组或对象。 我

回答 1 投票 0

C++ 中函数参数 (const int &) 和 (int & a) 的区别

我知道如果您编写 void function_name(int& a),那么该函数将不会对作为参数传递的变量进行本地复制。在文献中也遇到过,你应该写 void function...

回答 7 投票 0

可选择引用父结构

我正在尝试在 Rust 中实现一个可以包含值的“范围”。它可以选择具有一个父作用域,如果父作用域包含该值但它不包含该值,则它可以查找该父作用域。 该...

回答 1 投票 0

使用引用变量分配引用变量

我有一段 C++ 代码,它提供对私有成员变量的公共只读访问,如下所示: 类客户端{ 民众: const bool &connected = mConnected; // 提供只读访问...

回答 1 投票 0

如何从方法本身修改调用该方法的对象(textBox)?

我正在尝试创建一个可以在任意数量的文本字段中调用的方法,该方法将自动检查字段中的第一个字符是否是句点,如果不是,则添加句点(例如&...

回答 1 投票 0

将指向派生类的指针转换为引用指向基类的指针

为什么我无法将指向派生类的指针转换为引用指向基类的指针? 结构基{}; 结构派生:基{}; int main() { 派生* 派生 = nullptr; 静态转换 为什么我无法将指向派生类的指针转换为引用指向基类的指针? struct Base { }; struct Derived : Base { }; int main() { Derived* derived = nullptr; static_cast<Base*&>(derived); } 我得到: invalid static_cast from type 'Derived*' to type 'Base*&' 根据您的评论: “不,这不是一个学术问题。我需要调用一个以参数为参数的函数Base*&” 解决此问题的正确方法是创建一个适当类型的新指针变量,并将其(或者更确切地说,对其的引用)传递给相关函数: struct Base { }; struct Derived : Base { }; int main() { Derived* derived = nullptr; Base* base = static_cast<Base*>(derived); my_function(base); // takes a Base*& argument // If you need the pointer value and are sure that // it's a Derived* type: derived = static_cast<Derived*>(base); } 请注意,如果您在问题本身中包含相关信息(来自我上面引用的评论),您可能会更快收到此答案。 因为 Derived* 对象不是 Base* 对象,并且两者完全有可能具有不同的内存布局或值表示(例如,如果 Base 和 Derived 的对齐要求不同)。由于一个不是另一个,static_cast无法执行转换。 如果您知道自己在做什么并且知道类型双关语没问题,请使用类型双关语工具 — reinterpret_cast: reinterpret_cast<Base*&>(derived); 并注意误用的任何后果(与往常一样reinterpret_cast)。特别注意,根据 C++11 3.10/10,就标准而言,通过转换结果进行的任何访问都将是未定义行为(尽管您的编译器可能会提供更强的保证)。 请注意,在一般情况下,从 Derived* 到 Base* 的转换不必是无操作。例如,如果涉及多重继承,则可能涉及地址移位。 扩展https://stackoverflow.com/users/1782465/angew-is-no-longer-proud-of-so提供的答案,您可以尝试此代码来了解为什么引用 Base* (即Base*&) 无法绑定到 Derived*: struct B { int valb; }; struct D : B { int vald; }; template<typename T> struct SC { T vald_sc; }; template<typename T> struct MV { int valmv; T& valb; MV(T& vb) : valb(vb) {} }; void f1(B* dp) { } void f2(B*& dp) { } void f3(B** dp) { } int main() { SC<D> sc; MV<B> mv(sc.vald_sc); //Conversion succeeds because a D object is a B object: their memory layout starts at the same addr SC<D*> scp; //MV<B*> mvp(scp.vald_sc); //Error: candidate constructor not viable: no known conversion from 'D *' to 'B *&' for 1st argument //NB: A D* object is not a B* object. MV<B*> mvp1(reinterpret_cast<B*&>(scp.vald_sc)); MV<B*> mvp2(*reinterpret_cast<B**>(scp.vald_sc)); f1(scp.vald_sc); f2(reinterpret_cast<B*&>(scp.vald_sc)); f2(*reinterpret_cast<B**>(scp.vald_sc)); f3(reinterpret_cast<B**>(&scp.vald_sc)); return 0; } 仅针对您的错误 改变这个 static_cast<Base*&>(derived); to static_cast<Base*>(derived); ^^ 请参阅此处 http://ideone.com/1QuMLK 如果您想要参考,您需要做 Base* ptr = static_cast<Base*>(derived); Base &ref = *ptr; 你不能将指针转换为引用 - 它们是完全不同的东西

回答 5 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.