我需要创建一个结构,这是一个出列的容器。为了能够执行pop,push和其他动作,它需要包含函数指针,以便能够将它们作为参数传递给它们。我被困了
如果我首先声明函数,编译器无法识别我试图传递给它的结构。 如果我首先声明结构,那么指向函数的指针会产生错误,因为尚未声明函数。
我将如何解决此循环依赖?
显然,一旦我弄清楚如何让它们正常工作,我会想要得到一个可以在没有问题的情况下调用的A函数实例。
template <class T>
T pop_front(Deque&);
template<typename T>
struct Deque
{
int length = 2;
int head = 0;
int tail = 1;
T pop_front = (*functocall)(this);
};
template<class T>
T pop_front(Deque &a)
{
T x = NULL;
return x;
}
答案 0 :(得分:0)
你需要预先声明某些东西(或者,更好的是,所有东西)。
-ExecutionPolicy Unrestricted -File "MOVE-FILES.ps1"
我还建议您与template <typename T> struct Deque; // important. now the pop_front declaration knows about Deque.
template <typename T>
T pop_front(Deque&);
template<typename T>
struct Deque
{
int length = 2;
int head = 0;
int tail = 1;
T pop_front = (*functocall)(this);
};
template<typename T>
T pop_front(Deque &a)
{
T x = NULL;
return x;
}
和typename
保持一致......
此外,请考虑定义一种方法。你可以用C ++中的结构来做到这一点。