2016-05-15 39 views
1

我的問題是:無法解析基於模板的標識符「get」。 Netbeans的8.1 ​​

我收到這是帖子的主題中提出的警告。 這真的很令人費解。 自動完成不能與代碼一起使用,在此旁邊會發生警告。 該標準設置爲C++ 14

例如:

Boxes[2].get()->setPosition(Boxes[2].get()->getPosition() + v1); 

它給了我一個警告,當我嘗試寫另一Boxes[2].自動完成不起作用。

對象的聲明:

<shared_ptr<ofxBox2dRect>> Boxes; 

我嘗試使用這些鏈接來解決我的問題:

  1. Unable to resolve identifier on netbeans
  2. 「Unable to resolve identifier」 , although build is successful

還有更多,但他們並沒有幫助我:(我重申了項目等)

我的NetBeans版本是8.1和C++插件1.29.6.1在Apricity OS上工作。

我做了一些研究,並收到一些其他警告,我認爲它們與我的問題有關。

警告列表:

Recursive directive #include <boost/predef/os/bsd.h> 
Analyzed user include paths and user include headers: 
/usr/include 
/usr/lib 
/usr/lib64 
/usr/share 
/usr/src 
/usr/include/gstreamer-1.0 
/usr/lib/gstreamer-1.0/include 
/usr/include/AL 
/usr/include/alsa 
/usr/include/gtk-3.0 
/usr/include/at-spi2-atk/2.0 
/usr/include/at-spi-2.0 
/usr/include/dbus-1.0 
/usr/lib/dbus-1.0/include 
/usr/include/gio-unix-2.0 
/usr/include/cairo 
/usr/include/pango-1.0 
/usr/include/atk-1.0 
/usr/include/pixman-1 
/usr/include/freetype2 
/usr/include/libpng16 
/usr/include/harfbuzz 
/usr/include/glib-2.0 
/usr/lib/glib-2.0/include 
/usr/include/libdrm 
/usr/include/gdk-pixbuf-2.0 
/home/charllie/of-workspace/libs/fmodex/include 
/home/charllie/of-workspace/libs/glfw/include 
/home/charllie/of-workspace/libs/glfw/include/GLFW 
/home/charllie/of-workspace/libs/kiss/include 
/home/charllie/of-workspace/libs/poco/include 
/home/charllie/of-workspace/libs/tess2/include 
/home/charllie/of-workspace/libs/utf8cpp/include 
/home/charllie/of-workspace/libs/utf8cpp/include/utf8 
/home/charllie/of-workspace/libs/openFrameworks 
/home/charllie/of-workspace/libs/openFrameworks/graphics 
/home/charllie/of-workspace/libs/openFrameworks/math 
/home/charllie/of-workspace/libs/openFrameworks/events 
/home/charllie/of-workspace/libs/openFrameworks/gl 
/home/charllie/of-workspace/libs/openFrameworks/communication 
/home/charllie/of-workspace/libs/openFrameworks/video 
/home/charllie/of-workspace/libs/openFrameworks/3d 
/home/charllie/of-workspace/libs/openFrameworks/utils 
/home/charllie/of-workspace/libs/openFrameworks/app 
/home/charllie/of-workspace/libs/openFrameworks/sound 
/home/charllie/of-workspace/libs/openFrameworks/types 
/home/charllie/of-workspace/libs/openFrameworksCompiled/project 
Analyzed system include paths: 
/usr/include/c++/6.1.1 
/usr/include/c++/6.1.1/x86_64-pc-linux-gnu 
/usr/include/c++/6.1.1/backward 
/usr/lib/gcc/x86_64-pc-linux-gnu/6.1.1/include 
/usr/local/include 
/usr/lib/gcc/x86_64-pc-linux-gnu/6.1.1/include-fixed 
/usr/include 
/home/charllie/of-workspace 
Include path trail to current file: 
/home/charllie/of-workspace/libs/openFrameworks/graphics/ofPath.cpp: (line 1) 
/home/charllie/of-workspace/libs/openFrameworks/graphics/ofPath.h: (line 6) 
/home/charllie/of-workspace/libs/openFrameworks/graphics/ofPolyline.h: (line 5) 
/home/charllie/of-workspace/libs/openFrameworks/types/ofRectangle.h: (line 6) 
/home/charllie/of-workspace/libs/openFrameworks/utils/ofLog.h: (line 4) 
/home/charllie/of-workspace/libs/openFrameworks/utils/ofFileUtils.h: (line 8) 
/usr/include/boost/filesystem.hpp: (line 16) 
/usr/include/boost/filesystem/path.hpp: (line 29) 
/usr/include/boost/shared_ptr.hpp: (line 17) 
/usr/include/boost/smart_ptr/shared_ptr.hpp: (line 35) 
/usr/include/boost/smart_ptr/detail/spinlock_pool.hpp: (line 25) 
/usr/include/boost/smart_ptr/detail/spinlock.hpp: (line 50) 
/usr/include/boost/smart_ptr/detail/spinlock_sync.hpp: (line 18) 
/usr/include/boost/smart_ptr/detail/yield_k.hpp: (line 28) 
/usr/include/boost/predef.h: (line 17) 
/usr/include/boost/predef/os.h: (line 18) 
/usr/include/boost/predef/os/bsd.h: (line 52) 
/usr/include/boost/predef/os/bsd/bsdi.h: (line 11) 
/usr/include/boost/predef/os/bsd.h: (line 95) 
/usr/include/boost/predef/os/bsd/dragonfly.h: (line 11) 
/usr/include/boost/predef/os/bsd.h: (line 96) 
Ctrl+Alt+Click to open include hierarchy 

在我看來這個警告是最重要的:

Library File /usr/include/boost/smart_ptr/shared_ptr.hpp 
but there is an recursion #include <boost/predef/os/bsd.h> in included /usr/include/boost/predef/os/bsd/free.h 
Use Ctrl+Alt to show analyzed paths Ctrl+Alt+Click to open file with failed include directive 

我花了幾個小時試圖解決我的問題。我遵循了上面給出的鏈接中提到的步驟,但他們沒有幫助我。 希望在那裏我會找到幫助。

對我來說最重要的事情是 收到自動完成完全可行的。

我得到了自動完成ON,它工作正常,但不是在這種特殊情況下。

我認爲這可能是一個命名空間的問題,所以添加using namespace std; 我重建,清理並重新安排了項目,但它沒有幫助。(

感謝您的幫助;)

+0

爲什麼包含bsd頭文件? Apricity是Linux ... – perencia

+0

是的,但指定發行版總是更好。 frautils的openframeworks需要bsd – FieryCod

回答

1

我有同樣的問題。問題在於提升predef/os/bsd.h標題。它包含#ifndef BOOST_PREDEF_OS_BSD_H警衛的#else塊中的5個文件。這意味着如果這5個文件中的任何一個還包含bsd.h(它們都是),那麼這個頭文件不會被遞歸。

我的解決方案是編輯predef/os/bsd.h文件並在#else塊中添加一個遞歸守衛 - 所以,從94行開始,我的predef/os/bsd.h文件現在看起來像:

#ifndef BOOST_PREDEF_OS_BSD_H_PREVENT_RECURSION  <-- ADD THIS 
#define BOOST_PREDEF_OS_BSD_H_PREVENT_RECURSION  <-- ADD THIS 

#include <boost/predef/os/bsd/bsdi.h> 
#include <boost/predef/os/bsd/dragonfly.h> 
#include <boost/predef/os/bsd/free.h> 
#include <boost/predef/os/bsd/open.h> 
#include <boost/predef/os/bsd/net.h> 

#endif            <-- ADD THIS 

現在netbeans代碼的幫助很高興,我的代碼仍然鏈接和編譯沒有錯誤。

相關問題