2012-03-06 137 views
0

我想创建一个Qt应用程序(使用QT-创造者),使用我的图书馆,这是建立VS2010。库包含一个类,即使用std :: shred_ptr <>Qt应用程序和std :: shared_ptr的

#include <memory> 
struct MyStruct; 

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

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

然后我包括库的应用程序,使用This tutorial。 并得到下一个错误:

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

是解决这个问题的方法吗?

* PS *已更正的代码(已添加include和shared_ptr的参数类)。 但这个东西已经在原来的代码。 我认为,在Qt的创始人编译器的问题。但我不完全清楚,因为我在qt编程方面很新颖。

回答

2

请确保您使用C++ 11标志编译器。例如,在你的的.pro -file:

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

谢谢,我前一段时间找到了这个解决方案。但它仍然不是万能的。它可以抑制'shared_ptr'的问题,但不会识别'nullptr'关键字。所以我决定 - 最好的解决方案是在相同的编译器上构建应用程序,构建库。所以我会尝试绑定vs2010和qt,并使用vs2010构建应用程序。祝我好运))) 。 – kaa 2012-03-11 18:55:24

+0

不识别nullptr关键字?嗯...这很奇怪。 VC2010支持这个关键字(http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx)... – 2012-03-12 14:41:52

+0

VS2010认识...... QtCreator不 – kaa 2012-03-13 09:58:59

0

有INT您共享的代码没有MyClass2定义。

我相信你试图做std::shared_ptr<MyClass> mMember;

+0

[这里](http://www.devx.com/cplus/10MinuteSolution/28347/1954)你可以找到与你相似的例子。 – karlphillip 2012-03-06 19:35:58

0

包括<memory>定义的类之前。另外确保MyClass2已经声明。

相关问题