因此,我有一个引用一个类的3个实例的指针数组,我需要创建一个函数来获取对这3个实例的引用并将其返回到该数组中。
这是我一直在尝试的方法:
#include<cstdlib>
#include<cinttypes>
#include<random>
//Random number generator
uint8_t rand(uint8_t max){
std::default_random_engine generator;
std::uniform_int_distribution<uint8_t> distribution(0,max);
return distribution(generator);
}
class MyClass{
//...
}
myClass[100];
MyClass * getReferences(){ //What should the type of this be?
MyClass * arrayOfPointers[3];
for(uint8_t i=0;i<2;++i){
arrayOfPointers[i]=&myClass[rand(2)];
}
return arrayOfPointers;
}
int main(){
MyClass * arrayOfPointers[3]=getReferences();
return EXIT_SUCCESS;
}
如前所述,您正在返回指向错误的局部变量的指针。
使用标准库容器来避免C样式数组的陷阱和麻烦。
std::array<MyClass *, 3> getReferences()
{
std::array<MyClass *, 3> arrayOfPointers;
for(int i=0; i < 2; ++i) // don't use tiny int types of small for loops. it's not faster and it's harder to maintain
{
arrayOfPointers[i] = &myClass[rand(2)];
}
return arrayOfPointers;
}
int main()
{
std::array<MyClass *, 3> arrayOfPointers = getReferences();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句