声明中的循环依赖C ++ 11

时间:2017-09-14 19:23:55

标签: c++ c++11

我需要创建一个结构,这是一个出列的容器。为了能够执行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;
}

1 个答案:

答案 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 ++中的结构来做到这一点。