问题标签 [multiple-indirection]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
39013 浏览

c - 什么是双星(例如 NSError **)?

所以,我看到了这个:

在苹果文档中。为什么是两星?有什么意义?

0 投票
1 回答
1132 浏览

c# - C# P/Invoke:如何为结构化参数的字段实现双重间接

我正在从 C# 调用本机 dll。对于有问题的特定函数,我需要的参数之一是一个包含双重间接字段(指向指针的指针)的结构。

例如,采用以下 C 原型和结构:

以下 C# 代码只为字段 AnotherStruct 提供了一个间接级别,这是不正确的:

如何实现此处所需的双重间接?我知道在函数的双重间接参数的情况下如何做到这一点,但我对它嵌入在结构中的事实感到困惑。

也许我应该将 AnotherClass 字段声明为 IntPtr,然后使用不安全代码为其分配适当的值。这是一种有效的方法,还有其他/更好的选择吗?

0 投票
4 回答
1187 浏览

c++ - TOUGH:在 C++ 中处理深度嵌套的指针

我定义了这个结构:

和这些结构:

然后在我的代码中,我返回一个指向 s_molecule 的指针(类型定义为 t_molecule,但仍然如此)。

使用这个指针我可以让这个代码工作:

如果我将其替换为:

我现在遇到讨厌的段错误...

不要在这里放太多,但是当我尝试这样做时,我也会遇到段错误:

同样, current_molecule 是指向 s_molecule 结构的指针,该结构包含结构数组,而这些结构又或者直接具有变量或者是指针。我无法让这些多层间接工作。有关修复这些段错误的建议。

仅供参考,我正在使用 g++ 并使用自定义 makefile 系统在 Linux Centos 5.4 上进行编译。

0 投票
4 回答
388 浏览

c++ - C ++中的奇怪指针问题

我遇到了一个非常令人沮丧的指针问题。我之前在这里发布过: TOUGH:在 C++ 中处理深度嵌套的指针

但是那个帖子太长了而且过时了,所以我选择重新发布更多细节。

这是定义我的类型的头文件:

这是我为将 t_molecule 类型的 var 添加到分子数组的调用(请参阅上面的标题以了解 t_molecule 的定义)。

这完美地工作...... resname 字符串打印,并且债券向量中最后一个债券的信息打印。然后,一旦我添加了所有分子。我称之为:

这在债券线上出现了段错误。

我可以从我在添加步骤中打印的索引中看出我没有覆盖我推到向量上的分子(大小正在增长)..

换句话说,似乎正在发生的是:读取子向量(工作)->在父向量中添加更多项目->重新读取子向量(seg-faults)

这些函数是将分子变量添加到向量中的唯一方法,并且分子变量仅添加一次,并且在我当前的测试中不会在死后修改。

有任何想法吗????先感谢您!!

0 投票
3 回答
15972 浏览

c - C中的双指针常量正确性警告

指向非常量数据的指针可以隐式转换为指向相同类型的 const 数据的指针:

添加额外的 const 限定符以匹配额外的间接在逻辑上应该以相同的方式工作:

但是,使用带有-Wall标志的 GCC 或 Clang 编译它会导致以下警告:

为什么添加额外的const限定符“丢弃嵌套指针类型中的限定符”?

0 投票
1 回答
667 浏览

objective-c - 如何通过间接传递(和设置)非对象?

NSError 对象经常像这样使用(取自上一个问题):

我想用 BOOL 间接实现类似的东西:

但我不知道如何让它正常工作。

对于涉及 NSError 的给定方法规范,正确的实现将涉及类似(再次来自上一个问题):

使用类似的逻辑,这似乎应该适用于 BOOL 间接:

为什么这不起作用,实现它的正确方法是什么?

0 投票
1 回答
264 浏览

c - 使用固定数组值调用的 void** 参数

我声明了一个固定大小的数组:

我想将数组发送到一个函数,该函数将分配 vals 的值:

这基本上会在某个搜索字符串之后读取所有内容。例如:

其中“CONFIG=”是纯文本,后跟 15 个制表符分隔的数值。

这里有一些东西我远非对间接和固定的aized数组感到好奇,因此我想知道是否可以将固定大小的数组作为 void** 的参数发送(即使有信仰的飞跃,即数组将受到尊重。不同的问题。)


tl;博士版

为什么不允许这样做?

0 投票
2 回答
2367 浏览

objective-c - ARC 不允许将间接指针转换为指向“CFReadStreamRef *”的 Objective-C 指针

我想CFStreamCreatePairWithSocketToHostNSInput- 和OutputStreams 一起使用。我有两个 ivarsNSInputStream *_inputStreamNSOutputStream *_outputStream.

以下给了我两个错误消息:

错误:ARC 不允许 将间接指针强制转换为指向“ ”的 Objective-C 指针(又名“ CFReadStreamRef *” )struct __CFReadStream **
CFWriteStreamRef *struct __CFWriteStream **

我将如何解决这个问题?我尝试使用__bridge,但收到类似的错误消息。

0 投票
0 回答
116 浏览

c++ - 简化设计/删除方法调用中的间接级别的想法

在下面的以下代码(完整版的ideone)中,指向方法的指针Container::void updateFooContainer::void updateBar注册在 map 中m_updateMethod。这些方法简单地分别调用Foo::updateBar::update

Foo::update有没有办法通过存储和来避免这种额外的间接级别Bar::update

0 投票
2 回答
2301 浏览

c++ - 从 int** 到 const int** 的无效转换

我有一个带有二维整数数组的类,该数组实现为 int **。我为这个二维数组实现了一个访问器函数,如下所示,返回一个 const int** 以防止用户对其进行编辑:

但是我得到了编译错误“从 int** 到 const int** 的无效转换”。为什么这里不允许对 const 的提升?如何在没有编辑权限的情况下授予用户访问信息的权限?