问题标签 [raw-pointer]

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 回答
69 浏览

c++ - 重载运算符错误>>

试图operator>>用于我的班级飞机,我的main(). 它说

我的主要():

我的阅读():

运营商>>

它在(.h)中:

朋友 std::istream& 运算符>> (std::istream& is, Aircraft& A);

它在(.cpp)中:

至于以某种方式使用,像这样,它是完美的:

我做错了什么?

0 投票
1 回答
464 浏览

rust - 如何获得下一个指针?

我有一个用 C 实现的函数,我想用相同的接口用 Rust 编写一个函数。该函数接收指向数组开头的指针 ( win8_t *) 和数组的长度。我需要能够遍历数组。

必须有更好的方法来获取下一个值,但现在我可以做这个奇怪的事情:

0 投票
1 回答
919 浏览

c++ - C++ 处理堆上的对象

我目前正在使用 Visual Studio 2017 学习 C++,来自 C#/Java 背景。

我有一个关于在堆上创建对象并在以后正确引用它们的问题。到目前为止,我遇到了多个教程和做事方式。有些人建议尽可能多地使用智能指针,有些人则发誓它是魔鬼工具

我目前的主要看起来像这样:

一个函数处理个人数据的输入并返回一个指向新 Person 对象的指针。然后我有一个函数通过获取父引用并询问 makePerson 剩余数据来处理子对象的创建。

这可以被认为是好的 C++ 吗?我怎样才能让它变得更好?我真的很感激一些代码示例。

正如一些人已经建议的那样,我可以用shared_ptr<Person> person(重)或unique_ptr<Person>(比共享更好)替换原始指针。

这是 Person 和子类的代码。请注意, Child 有一个类型为 的原始指针Person *parent

孩子是一个人,孩子知道孩子的父母是谁是有意义的。但是,我不确定如何处理这些“知识”。这是我用于子类的代码:

这是我得到的输出:

在此处输入图像描述

我想我的问题仍然存在,谁能给我一个例子,说明它应该如何被认为是好的 C++?

@user4581301 如果您查看更新后的 main,您的意思是我应该返回 astd::unique_ptr而不是 a* (raw pointer)吗?在这种情况下,我的函数将如下所示:

变量声明为:

这会被认为比我迄今为止所拥有的“更好”的 C++ 吗?

0 投票
1 回答
6553 浏览

rust - 如何使包含 Arc 的结构字段可写?

我有一个必须以原始指针形式检索的结构。

我需要写入它的map字段,所以我将原始指针取消引用到结构中,然后尝试写入它的数据字段。但是,我收到以下错误。

如何使map字段可变和可写?

使用以下代码可重现该错误:

箱:memmap = "0.6.2"

0 投票
1 回答
361 浏览

pointers - 我应该如何决定何时或多或少地适合使用原始指针?

我的印象是,Rust 旨在用于高度安全的系统。然后我注意到原始指针允许任意指针算术,它们会导致内存安全和安全问题。

0 投票
5 回答
261 浏览

c++ - 将(C 类)指针转换为 C++ 矩阵

我想将矩阵从一个函数传递到另一个函数,所以我做了:

如何让通话init_matrix()更轻松?我想象它像init_matrix(x, N)

请注意,我有点避免std::vector,因为我很快就会使用并行编程(pthreads、OpenMP、MPI)。所以我会要求一个没有std构建矩阵方法的解决方案。

0 投票
1 回答
1304 浏览

reference - CString::new().unwrap().as_ptr() 给出空 *const c_char

我有一个期望的 C 函数,*const std::os::raw::c_char并且我在 Rust 中完成了以下操作:

但是,我无法_test_str打印出来,上面程序的输出很简单

如果我将它传递给_test_str某个 C 函数并看到它是一个空字符串。我做错了什么?

0 投票
1 回答
203 浏览

c++ - removing shared pointers from vector or map

I am currently in the process of learning smart pointers and try to avoid using raw pointers.

I have a vector with shared ptrs

and an Add and Remove method

Now in another part of my code I have a map

Now when I try to remove elements from the map like this:

Now the problem lies here : iterator->second.get() It tells me it cannot convert the rvalue of type pointer to shared ptr. However if I use raw pointers instead of shared pointers this is not an issue at at all.

So, I am wondering if in this case it would be better to just use raw pointers or can I work around this with shared pointers?

0 投票
2 回答
253 浏览

c++ - 在 C++ 中为我自己的基于指针的数组分配内存的正确方法

我搜索了类似的问题,但找不到任何满足我需求的问题。

我是一名计算机科学专业的学生,​​目前正在学习算法和数据结构。对于我的考试,我必须用 C++ 实现一组模板化数据结构。我不被允许使用 STL,因为这是一个关于如何实现类似于 STL 的库的考试问题。

我的实现有效,但是我想向您询问有关动态内存分配的建议。

其中一些数据结构使用动态数组(实际上是原始指针)来存储元素,当满时自动增长并在某个负载因子阈值下收缩(分别将其大小加倍和减半)。为了简单起见(也因为我不应该使用它们),我没有使用任何“现代东西”,例如智能指针或移动构造函数/运算符 =,基本上我依赖于 C++98特征。我使用了 new [ ]delete [ ],但我到处都读到这是一种不好的做法。

我的问题是:在 C++ 中处理基于数组的数据结构的动态内存分配的正确方法是什么?

这是我所做的一个示例(该数组先前已由 new [ ] 分配):

0 投票
1 回答
145 浏览

rust - 将 *mut T 强制转换为 *mut ManuallyDrop 是未定义的行为吗?

根据文档,ManuallyDrop<T>是一个零成本的包装器。这是否意味着我可以取消引用ManuallyDrop<T>从原始指针转换为的原始指针T