函数,返回一个对象数组
function that returns an array of objects
我有一个结构
class pyatno {
int pyatnoNumber;
int locX, locY;
bool possible;
char *number;
char pyatnoView[4][4];
}
我们的想法是创建一个函数,该函数将返回一个pyatno.pyatnoView对象的数组,但这是一团糟。我不明白我到底是怎么才能进入这个"房产"的。我不擅长c++,所以如果它不是真的,或者我说错了什么,请解释一下,因为我真的很难回答这个问题。
正如您所提到的,您对c++的能力不是很强,您的问题也很不清楚,这里有几个建议。
为了访问类的属性,c++有可见性的概念;默认可见性为private
,即属性和函数在类之外不可见:
class Foo {
int some_value;
};
有几种方法可以从对象中检索数据,但简单地说,您应该公开属性:
class Foo {
public:
int some_value;
};
或者通过访问器/变异器暴露它:
class Foo {
int some_value;
public:
int get_some_value() { return some_value; }
void set_some_value(int v) { some_value = v; }
};
另一件需要注意的事情是,您不能返回arrays
!在c++中,当数组通过函数边界(也就是说,作为参数传递到或从中返回)时,在许多其他情况下,数组将"衰减"到指针。例如,以下是我将如何将一个字符数组(也称为c-string
)传递给函数:
#include <iostream>
using namespace std;
void print_cstr(const char *cstr) {
cout << cstr << endl;
}
int main() {
const char my_cstr[20] = "foo bar baz qux";
print_cstr(my_cstr);
return 0;
}
那么N维数组会发生什么呢?好吧,如果char[1]
衰减为char*
,那么char[1][1]
将衰减为char**
,依此类推。您可能已经注意到C程序中较旧的main
签名,它用于传递表示传递给程序的参数的字符串数组:
int main(int argc, char **argv) { ... }
非常重要的是,您要意识到这个实际上不再是一个数组。C风格的字符串有点特别,因为它们通常以空字节