问题标签 [data-member-pointers]

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 投票
1 回答
113 浏览

c++ - 指向数据成员的指针的可变参数列表

考虑这个工作代码。该函数searchByDataMember使用指向数据成员的指针作为参数在容器中搜索值。

那么,如果指向自身的数据成员具有要搜索的数据成员,如何将上述内容扩展到使用指向数据成员的指针的可变参数列表作为参数呢?例如,

所以这里我们希望在容器中搜索 具有数据成员为 11的数据成员的容器objects,即具有“Tom”的容器。指向数据成员的指针链可以传递到.Object*Thing*valueObject*searchByDataMember

0 投票
1 回答
153 浏览

c++ - 反转指向数据成员的指针

嗨,我想弄清楚计算类成员的偏移量(以反转它)是否合法(通过 C++)标准。

成为一个&(parent_p->*offset)C ++ 是否合法?parent_pnullptr

0 投票
0 回答
101 浏览

c++ - 成员指针应该在初始化时总是使用 new 吗?

这个问题中,我在构造函数调用的方法中遇到了奇怪的分段错误,但显然没有其他地方(甚至在其定义看起来像的CodeBreaker::testVectorOfElements调用中也没有:main()

CodeBreaker有一个私人的std::vector<IntegerRing::Element> numericCodes

这个问题的根源似乎是我的声明IntegerRing,它是一个IntegerGroup. 这两个类的 MCVE 代码可以在下面找到:

整数组.h

整数组.cpp

整数环

整数环.cpp

CodeBreaker.h

CodeBreaker.cpp

主文件

Array只是一个 DIY-vector我必须在几年前为数据结构类编写。我用它代替了vector我在这里遇到的问题。(问题认知?)

所有代码都可以在这里找到,问题是我是否应该new在分配这些指针时使用?当IntegerRing被创建时,它尝试创建IntegerRing::Elements,它传递一个指向自身的指针(出于必要:环的数学定义要求它配备加法和乘法,并且该数学结构的元素使用该运算符)。

0 投票
2 回答
81 浏览

c++ - 自动模板参数、数据成员和常量

假设我有一个指向数据成员的指针,我想知道它是否为 const。换句话说:

在 C++ 中,我曾经做过这样的事情:

不过,现在有了auto模板参数,模板参数列表就优雅多了:

在这种情况下,我发现知道数据成员是否指向 const 的唯一方法是:

但是,它对我来说看起来很丑,我觉得必须有更好的方法来做到这一点。
有没有其他(更短的)解决方案?

0 投票
5 回答
507 浏览

c++ - 在 C++ 中使用结构成员指针填充结构

所以我有以下可用:

这段代码是给我的,我不能以任何方式修改它。它来自一些旧的 C 项目。

我需要使用getData具有不同键的函数填充结构,如下所示:

当然,这是一种简化,每个作业中都会发生更多的事情。关键是我想在一个常量结构中表示键和结构成员之间的映射,并用它来转换循环中的最后一个代码。我正在寻找类似以下的内容:

然而,这有两个问题:

  1. 它不编译:) 但我相信这应该很容易解决。
  2. 我不确定如何获得sizeof()使用 strncpy/strlcpy 而不是 strcpy 的论点。我char *用作成员的类型,所以我丢失了关于每个数组有多长的类型信息。另一方面,我不确定如何使用char[T]每个成员的特定类型,因为如果每个结构成员指针具有不同的类型,我认为我无法将它们放在std::vector<T>.
0 投票
0 回答
44 浏览

c++ - C++ 拥有作为指向另一个类的指针(或引用)并且可以处理 const 和非 const 情况的类成员的最佳方式

考虑以下示例代码。它按预期编译和工作。但是,如果我在 main 函数的第一行的开头添加“const”,它将无法编译,因为 B 类需要一个指向 A的指针,并且添加 const 后,我​​们将有一个指向const A的指针。模板化 B 是一种选择,但我想知道是否有更清洁/更好的解决方案。我愿意接受各种建议,包括将 B 移到 A 中(如果有帮助的话)(B 仅供 A 使用)。

0 投票
1 回答
52 浏览

c++ - 如何从类指针和指向 C++ 成员的普通指针中获取成员指针?

我可以像示例中那样获得指向对象实例成员的普通指针。我怎样才能在相反的方向做到这一点?

从技术上讲,它必须是可能的,因为对象和实例上的成员之间的区别在于成员指针。虽然我不知道正确的语法。

0 投票
1 回答
122 浏览

c++ - 数据成员指针作为关联容器键

我正在尝试创建一个指向数据成员std::set的指针。但是,我找不到对此类指针进行排序或散列的方法。

它们无法与 进行比较operator<,它们似乎不受支持,std::less并且没有标准的整数类型可以保证保持它们的表示形式(它们可能不适合std::uintptr_t)。

这是我首先尝试的(https://godbolt.org/z/K8ajn3rM8):

它产生错误error: invalid operands of types 'int foo::* const' and 'int foo::* const' to binary 'operator<'。完整的错误消息还暗示这发生在std::less.

我发现了一个类似的问题(Set of pointer to member),但它可以追溯到 C++14,答案归结为“将指针放入向量中并改为执行线性搜索”。

C++17 或 C++20 是否有任何更改可以使用指向数据成员的指针作为标准关联容器的键?