2012-03-06 19 views
0

VS2010でビルドされた私のライブラリを使用するqtアプリケーション(qt-creatorを使用)を作成したいと思います。ライブラリは、その後、私はThis tutorialを使用して、アプリケーションのライブラリが含まれたクラスは、その使用のstd :: shred_ptr <>qtアプリケーションとstd :: shared_ptr

#include <memory> 
struct MyStruct; 

class MyClass 
{ 
    public: 
    MyClass::MyClass(); 

    protected: 
    std::shared_ptr<MyStruct> mMember; 
} 

が含まれています。 と次のエラーを取得:

ISO C++ forbids declaration of 'shared_ptr' with no type 
invalid use of '::' 
expected ';' before '<' token 

は、この問題を解決する方法ですか?

* PS *修正されたコード(includeおよびパラメータクラスshared_ptrが追加されました)。 しかし、これはすでに元のコードになっています。 私は、qt-creatorコンパイラの問題だと思います。しかし、私はqtプログラミングではかなり新しいので、正確には分かりません。

答えて

2

コンパイラにC++ 11フラグを必ず使用してください。たとえば、あなたの.PRO -fileで:

QMAKE_CXXFLAGS += -std=c++0x 
+0

ありがとうございました、私はこのソリューションをしばらく前に見つけました。しかしそれはまだ万能薬です。 'shared_ptr'の問題を抑制しますが、' nullptr'キーワードは認識しません。だから、私は決めました。最高の解決策は、同じコンパイラでアプリケーションをビルドすることです。そのライブラリはビルドされていました。だから私はvs2010とqtをバインドし、vs2010を使ってアプリケーションを構築しようとします。私に運がいい))))。 – kaa

+0

nullptrキーワードを認識できませんか?うーん...それは変です。 VC2010はこのキーワードをサポートしています(http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx)... –

+0

VS2010は認識しています... QtCreatorは認識しません – kaa

0

あなたが共有したコードMyClass2 intの定義はありません。私はあなたがstd::shared_ptr<MyClass> mMember;

+0

【こちら】(http://www.devx.com/cplus/10MinuteSolution/28347/1954)あなたはあなたに似た例を見つけることができます。 – karlphillip

0

を行うにしようとしていたと信じて

は、クラスを定義する前に<memory>を含めます。また、MyClass2が宣言されていることを確認してください。

関連する問題