传递一个矢量指针作为方法的输入
Passing a vector pointer as input to a method
我需要确定一个方法处理哪些属性(字符串)。因此,我将我的方法设计如下:
void method1( std::vector<String> * myVector )
{
myVector = new std::vector<String>();
//do something;
myVector->push_things;
}
那么,我将像这样从topMethod()中调用method1。
topMethod()
{
std::vector<String> * aVector = 0;
method1( aVector );
//process aVector to identify its contents;
}
现在,method1()中的向量myVector得到了很好的填充。但是它的内容在调用方方法(即topMethod())中无法调用。我不确定他们是如何被释放的。我觉得我在使用new进行分配,所以它们应该在调用后出现在调用者位置。
因为你没有传递指针作为引用:
试试这个:
void method1( std::vector<int>* & myVector )
{ // ^^^ note this!
myVector = new std::vector<int>();
myVector->push_back(100);
}
//call it
std::vector<int> *v;
method1(v);
或:
void method1(std::vector<int> & myVector )
{
myVector.push_back(100); //myVector is not a pointer now!
}
//call it
std::vector<int> v;
method1(v);
就我个人而言,我更喜欢以下内容:
std::vector<int> method1()
{
std::vector<int> myVector;
myVector.push_back(100);
return myVector;
}
//call it
std::vector<int> v = method1();
除了告诉你为什么你的解决方案是错误的答案之外,我还将提出如何用一种合适的c++方式来实现它。使用引用
void method1(std::vector<int>& v)
{
v.push_things;
}
int main()
{
std::vector<int> v;
method1(v);
}
应该通过引用将指针传递给vector。
void method1( std::vector<int>* & myVector )
如果你的方法的任务是创建一个新的向量,那么返回它:
std::vector<int>* method1()
如果你需要额外的信号返回值,创建更多的向量,等等,使用这个:
.. method1( std::vector<int>*& myVector, ..)
如果你的方法的唯一工作是操作一个向量:
.. method1( std::vector<int>& myVector)
相关文章:
- 在C#中处理C++指针而不使用unsafe的最佳方法
- C++优先级队列,按对象的唯一指针的特定方法升序排列
- 对于C++中使用智能指针的指针算术限制,有没有一种变通方法
- 有没有一种"cleaner"的方法可以在指向基的指针向量中找到派生类的第一个实例?
- 在c++中为我自己的基于指针的数组分配内存的正确方法
- 将成员函数指针作为参数传递给模板方法
- 通过函数指针定义类范围之外的方法
- 模板方法访问正向声明的类仅在没有此指针的情况下无法编译
- 如何访问由共享指针保存的类方法?
- 初始化指向类实例的智能指针并访问其方法
- 我无法使用C++指针指向类方法返回的 std::vector
- 如何在工厂方法中返回指向基于基础操作系统的派生类的有效指针
- 有没有将变量名称转换为双指针的简短方法?
- 在自定义 std::vector-like 容器中处理指针和非指针模板类型的最佳方法是什么?
- 如何在成为指向基类的指针后保留对子类方法的使用?
- 从纯虚拟类 (A) 派生的指针无法访问来自纯类 (B) 的重载方法
- 类指针方法崩溃程序
- 证明两指针方法有效(对和)
- Qt 删除指针方法
- 我如何将一些类的指针方法转换为指针函数