所以我有这个结构:
// Structure used to define a point (x,y) in the grid.
typedef struct
{
int x, y;
} Point;
和这个功能
Sequence getSequence(int grid[][MAXCOLS], Point startPos)
{
// Create an empty sequence
Sequence emptySeq;
emptySeq.size = 0;
// Use the empty sequence to start the recursive function
return generateSeq(grid, startPos, emptySeq);
}
我不知道序列开始的位置。所以我也在main中调用了16次getSequence函数,这样你就可以将16个网格位置中的每一个作为可能的起始位置传递给它。
我试过这个,但它没有用。
getSequence(grid, x.0, y.0 );
有人可以告诉我如何调用main中的getSequence。我是编程新手
由于
答案 0 :(得分:4)
最直接的方法是创建一个Point
的实例,正如Arun所说:
int main()
{
Point p1 ;
// create grid here
p1.x = 0 ;
p1.y = 0 ;
getSequence( grid, p1 );
}
如果您可以使用C++11
,那么您也可以这样做:
getSequence( grid, {0,0} );
更像C++
- 就像,尽管你真的应该使用constructor
这样:
class Point
{
public:
int x, y;
Point( int a = 1, int b = 1 ) : x(a) , y(b) {}
} ;
此外,您应该考虑将x
和y
设为private
,但您的特定示例会变得更复杂。如果您有constructor
16
,那么您的 getSequence( grid, Point(1,1) );
getSequence( grid, Point(2,2) );
电话会变得更容易,因为您可以这样做:
a
或者您也可以使用循环,b
和for( int a = 0, b = 0; a < 5; ++a, ++b)
{
getSequence(grid, Point(a,b) );
}
的值取决于您的应用:
{{1}}
答案 1 :(得分:1)
作为其他答案的替代方案,您可以给Point
一个构造函数:
struct Point
{
Point(int x, int y) : x(x), y(y){}
int x, y;
}
然后做:
getSequence(grid, Point(0, 0));
这将消除每次要调用函数时显式构造(或修改)Point
对象的需要,并且IMO更具可读性,因为在此上下文中Point
的目的仅仅是getSequence
的参数。
注意:typedef
前面的struct
关键字为unnecessary in C++。
答案 2 :(得分:0)
您必须创建Point的实例并将其传递给getSequence方法。
Point gridpoint;
gridpoint.x = 0;
gridpoint.y = 0;
getSequence(grid, gridpoint);
// Use gridpoint here