将局部方法变量分配给类指针
Assign local method variable to class pointer
我正在更改一些代码来处理它调用的某些函数的签名更改。原始代码看起来像(这只是说明性的(:
int main()
{
TestClassA instance;
instance.MethodA();
instance.MethodB();
// do other stuff with instance
}
class TestClassA
{
void MethodA ()
{
UList* aList = NULL;
getListOfStuff(aList);
// do some stuff
fList = aList;
}
void MethodB ()
{
//do something with fList
}
UList* fList;
}
struct Ulist
{
int value;
std::vector<Ulist> components;
}
getListOfStuff(UList* aList)
{
aList = new UList();
PopulateOriginal(aList);
}
getListOfStuff 的签名现已更改为:
getListOfStuff(UList& aList)
{
aList=PopulateNewVersion();
}
看来我不清楚我在问什么,所以澄清一下......我要问的是,如何调用该方法的新版本getListOfStuff
并将返回的数据(aList
参数(安全地存储在原始指针字段fList
中,然后以后可以从MethodB
访问。
接下下面的@GuillaumeGris答案,以下方法行得通吗?(我不确定的是新getListOfStuff
中的赋值是否会影响fList
在退出后MethodA
是否仍指向有效数据。
void MethodA ()
{
UList* aList = new UList();
getListOfStuff(*aList);
// do some stuff
fList = aList;
}
你不需要显式的堆分配(new
(。
class TestClassA
{
void MethodA ()
{
// Clear components
fList.components.clear();
getListOfStuff(fList);
}
UList fList;
}
如果 fList 是可选的,我建议使用std::unique_ptr
class TestClassA
{
void MethodA ()
{
if (!fList)
fList = std::make_unique<Ulist>();
else
{
// Clear components
fList->components.clear();
}
getListOfStuff(*fList);
}
std::unique_ptr<UList> fList;
}
相关文章:
- 将指针分配给另一个指针时会发生什么情况?
- C++将一个指针分配给另一个指针时执行的类型检查
- 我似乎无法为指针分配一个数组,然后更改数组的内容
- C++为 void 指针分配一个字符串
- 当我在 C++ 中将派生类的指针分配给指针时,地址会更改
- MPI 集合通信中的指针分配
- 函数指针分配在创建 DLL 后导致错误
- 通过双指针分配指针
- C++编译时使用 constexpr 字符数组指针分配静态数组?
- 我可以直接为指针分配地址吗?如果是,如何做到这一点
- 为什么为char指针分配内存不会截断char序列
- C++指针分配字符数组的地址
- 将 void 指针分配给另一个 void 指针
- 如何将不同的成员函数指针分配给注册类的不同实例?
- 如何为指针分配特定的内存地址?
- C++ - 无法将顶部常量指针分配给另一个非常量指针
- 将指针分配给另一个指针时会发生什么情况?
- 为指向C++中的对象/对象的指针分配堆内存
- 将指针分配给字符串变量中包含的地址
- 当直接分配时,为什么此功能指针分配起作用,而不是与有条件的操作员一起使用