我作以下声明:
class Servo {
protected:
static const int maxServos = 16;
static Servo servos[maxServos]; //Array declaration
};
Servo Servo::servos[Servo::maxServos]; //Array definition
Run Code Online (Sandbox Code Playgroud)
...它可以编译,很棒!但是我不明白为什么要编译它,因为在我看来maxServos受保护了,并且在定义数组时在全局范围内使用它。我尝试在另一个全局上下文中使用它,的确确实得到了编译错误:
int main() {
std::cout << Servo::maxServos; //This will not compile.
}
Run Code Online (Sandbox Code Playgroud)
那么发生了什么 ?数组的整个定义是否受命名空间限定的范围的影响?是编译器故障吗?
我正在使用Lubuntu 16.04 O / S在Raspberry PI上使用g ++ -std :: c ++ 11。
我按照 GStreamer Plugin Writer's Guide (1.7.1.1) 中的说明操作:
http://gstreamer.freedesktop.org/data/doc/gstreamer/head/pwg/html/index.html
为了构建一个新的 gstreamer 插件。基本上我运行 make_element 然后按照描述编辑 Makefile.am 。令人惊讶的是 make 和 make install 工作,我最终得到:
/usr/local/lib/gstreamer-1.0/libgstframe_grabber.la
/usr/local/lib/gstreamer-1.0/libgstframe_grabber.so
据我了解,gst-inspect 应该会自动找到这个插件。该指南说 /usr/local/lib/gstreamer-1.0 需要添加到 GST_PLUGIN_PATH 以便找到此目录中的插件。另一个文件指出该目录是自动搜索的。我尝试使用和不使用环境变量,但没有运气。
现在我应该说我刚刚开始使用 gstreamer 并且我正在遭受信息过载的困扰。我已经阅读了很多文档,但我什至不知道我是在构建 gstreamer1.0 还是 gstreamer0.10 插件(我认为该指南适用于 gstreamer1.0,因为该指南的版本是 1.7.1.1 但不能'不能肯定)。
有人可以在这里给我一个线索吗?