更改函数中指针的目标(指向动态创建的对象)
Changing target of pointer in function (to a dynamically created object)
这可能很愚蠢,但我在这里快疯了..
为什么 pTest 在 main 中测试函数后没有指向新的 int ?它会导致赛格故障。我该怎么做。
在我的真实代码中,我需要传递一个指针并动态创建对象,因为 pTest 是虚拟类的子类(从文件中读取,所以我事先不知道)
void test(int* pTest)
{
int *p = new int(2);
pTest = p;
std::cout << "pTest : " << *pTest << std::endl;
return;
}
int main()
{
int *pTest = NULL;
test(pTest);
std::cout << "pTest : " << *pTest << std::endl;
return 0;
}
如果你想改变作为参数传递的值,你必须提供指向它的指针。这意味着如果你想改变给定 int 的值,你正在传递 int* 。在您的情况下,您希望改变 int*,以便您需要将其作为 int** 传递。
如果您希望在此
函数范围之外更改pTest
值,则需要通过引用传递 pTest:void test(int*& pTest)
。
void test(int*& pTest)
{
int *p = new int(2);
pTest = p;
std::cout << "pTest : " << *pTest << std::endl;
return;
}
相关文章:
- 从C++中的数字输入动态创建矩阵
- 如何从QToolBox中动态创建的QLineEdit中获取文本
- 如何在C++中为堆栈动态创建结构?
- 如何使用类型级函数动态创建静态类型?
- 如何在动态创建的CMFCToolbar的工具提示中添加描述?
- 如何设置动态创建的CMFCToolbar的原始状态?
- 我可以动态创建新地图并作为函数参数传递吗?
- 如何在循环中动态创建变量(c++)
- 如何在C++中使用 new 运算符创建对动态创建的数组的引用?
- 在堆或堆栈上分配的动态创建的字符串 - C
- "动态创建的事件处理程序"复选框
- 在字符串数组中动态创建和存储数据
- 第一次尝试使用new动态创建结构数组,程序挂起没有错误
- 无法将动态创建的对象数组从 qml 发送到 c++ 作为方法参数
- 为动态创建的数组使用静态关键字有什么意义吗?
- 有没有办法基于文本文件动态创建对象?
- 从类 c++ 动态创建数组
- 如何在循环中动态创建类对象?
- 动态创建 std::vector 并将其传递给另一个函数的各种方法
- 使用 createComponent 动态创建 QML 对象