从函数返回数组

时间:2016-07-10 02:09:17

标签: c++

试图用不同的方法让它工作几个小时,但仍然无法让它工作......

主要课程:

WinHandle wh;
int* myarr;
myarr = wh.getpos;
cout << "left: " << *(myarr) << endl;

WinHandle.cpp类:

int* WinHandle::getpos(){
  int pos[4];
  //code
  pos[0] = 2;
  //code

  return pos;
}

WinHandle.h文件:

int* getpos();

这只是我的最后一种方法,试过各种其他方法无济于事。有什么帮助吗?

继续

non-standard syntax; use '&' to create a pointer to member

cannot convert from 'int *(__thiscall WinHandle::* )(void)' to 'int *'

3 个答案:

答案 0 :(得分:2)

无法直接从函数返回普通数组。

改为使用std::array

答案 1 :(得分:1)

您的编译错误的直接来源是错误的语法。当您调用该函数时,需要使用括号Btn_FaceBook.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { MyDbHandler handler = new MyDbHandler(MainActivity.this, null, null, 1); User user = new User("Thomas", "Male", "21"); handler.AddUser(user); } 来调用它。但是,这是一个较小的问题。一个更大的问题是你返回一个函数本地的数组。这样做不会,一旦退出函数,这个数组就会被销毁,你最终会得到一个指向已删除对象的指针。对未定义的行为说'嗨'。

要解决此问题,您需要返回wh.getpos()std::vector

答案 2 :(得分:0)

最佳解决方案是使用std::array(或std::vector),因为它最灵活。否则,您可以在方法外创建数组,然后使用引用参数在wh.getpos()内对其进行操作。