返回一个指针,从函数指向在main()中初始化的对象
Return a pointer from a function to an object initialized in main()
我已经为这个问题挣扎了几个小时了,我已经搜索了每一个对我有意义的术语。我甚至可能已经通读了一个相关的答案,但没有意识到它是这样的,因为我对指针有点困惑。
所以,我有一个结构体,它是一个对象的一部分,这个对象是另一个对象链的一部分,这个对象链被"锚定"在另一个对象中,这个对象本身是一个链的一部分,这个链被"锚定"在main中初始化的锚定对象中。
struct values
{
double val, ues;
}
class small
{
public:
values vals;
}
class big
{
public:
small *small_anchor;
}
values &getPointerToStruct(big *con)
{
values *return_vals;
if(con->small_anchor->vals.val==10)
return_vals=con->small_anchor->vals;
return (&return_vals);
}
int main()
{
values *main_values=NULL;//This is supposed to be pointing to the "vals" struct contained inside the "small" object.
big *big_anchor;
big_anchor = new big;
big_anchor->small_anchor = new small;
big_anchor->small_anchor->vals.val=10;
big_anchor->small_anchor->vals.ues=5;
main_values = getPointerToStruct(&big_anchor);//now main_values should be pointing to the "vals" struct
//I want to manipulate the value INSIDE the object itself
main_values.val++;
}
我已经尝试了&
, *
的每一个组合,没有我能想到的前缀,但没有什么会给我所希望的结果。"最接近"我得到的是复制"vals"(从对象内部)到"main_values",这样我就可以操纵那里的值,这对我没有任何用处,因为我想操纵变量的源。
还请注意,我省略了向下滚动链以获得我试图到达的对象的过程,并且"return_vals"似乎是任意的,但碰巧有两个可能的候选结构可能是我的程序正在寻找的结构,并且"return_vals"包含迄今为止找到的最佳候选,当找到更好的候选时被覆盖,或者在例程结束时返回。
你写了
values &getPointerToStruct(big *con)
{
values *return_vals;
if(con->small_anchor->vals.val==10)
return_vals=con->small_anchor->vals;
return (&return_vals);
}
我认为你想要的地方
values *getPointerToStruct(big *con)
{
values *return_vals = 0;
if(con->small_anchor->vals.val==10)
return_vals=&con->small_anchor->vals;
return (return_vals);
}
但main_values.val++;
中的.
是错的。你需要对你是想使用values*
还是values&
保持一致。如果愿意,您可以使用values&
来完成所有这些工作,但是main_values
应该是values&
,并且在准备初始化之前不声明它。return_vals
作为values&
是不实用的,因为要求完整的代码给它一个暂定的地址,以后可以有条件地修改。但是,即使将return_vals
作为values*
,如果这是您喜欢的,您仍然可以返回values&
。
相关文章:
- 在main()之外初始化std::vector会导致性能下降(多线程)
- 为什么 'main' 函数中的局部 int 变量会自动初始化?
- 使用函数从 Visual Studio 2017 中的 main 创建和初始化数组
- C++ main 函数中初始化静态变量
- 如何使用GDB跟踪Main()之前初始化的所有静态全局变量
- 如何在 main 函数的一个对象中初始化两个类的值?C++
- 实用程序函数不会在 .h 文件中初始化并在 main 中定义.cpp
- 静态变量需要在MAIN处理ARGV参数之前进行初始化
- 静态内联变量是否需要在 main 之前初始化?
- 如何在另一个函数中初始化在 main 中声明的数组
- 非本地非内联变量的初始化:是否严格在"main()"函数调用之前进行
- 可以(通过编译器)使用多少个线程来初始化全局对象(函数main之前)
- Main()函数中的默认初始化
- C++ 如何从 main() 外部访问在 main() 中初始化的对象
- C++ - 在一个函数/文件中初始化变量然后在main()/另一个文件中使用它的最佳方法是什么?
- 已在函数中初始化,但未在main中初始化
- C++当我们创建对象时,构造函数会初始化,但是如果我想再次重新初始化对象,请在 main 的某个时候说该怎么做
- 通过派生类构造函数初始化后,从main()访问基类变量
- C++编译器在 main 之后实现动态初始化
- 在 main() 消失之前初始化的值