c++ 中的静态声明班级

发布于 2024-12-22 21:34:14 字数 431 浏览 1 评论 0原文

我不明白为什么第一个不起作用而第二个起作用!

#include <boost/bind.hpp>
#include <boost/function.hpp>

#include "concurrentQueue.h";
class TestClass {
    public:              
                static concurrentQueue<function<void()>> notW;

                static concurrentQueue<int> Works;
}

我还附上了并发队列类的开头:

template<class Data> class concurrentQueue

I don't understand why the first doesn't work instead the second works!

#include <boost/bind.hpp>
#include <boost/function.hpp>

#include "concurrentQueue.h";
class TestClass {
    public:              
                static concurrentQueue<function<void()>> notW;

                static concurrentQueue<int> Works;
}

I attach also the beginning of the concurrentQueue class:

template<class Data> class concurrentQueue

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

晒暮凉 2024-12-29 21:34:14

>> 内放置一个空格,以防止其被视为右移运算符:

static concurrentQueue<function<void()> > notW;

对于 C++11 编译器,这不是必需的,因为编译器将解释尖括号尽可能关闭模板参数列表。

Put a space inside the >> to prevent it from being treated as a right-shift operator:

static concurrentQueue<function<void()> > notW;

With C++11 compilers this won't be necessary, as the compiler will interpret the angle brackets as closing the template argument list where possible.

心作怪 2024-12-29 21:34:14

在 C++ 03 及更早版本中,两个右尖括号之间需要有一个空格。这已在 2011 年新标准中得到“修复”。

例如,请参阅此问题了解更多信息。

You need a space between the two closing angle brackets in C++ 03 and earlier. This has been "fixed" in the new 2011 standard.

See for example this question for more information.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文