试图用不同的方法让它工作几个小时,但仍然无法让它工作......
主要课程:
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 *'
答案 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()
内对其进行操作。