2012-03-06 2 views
0

Я хочу создать приложение qt (используя qt-creator), которые используют мою библиотеку, которая была построена в VS2010. Библиотека содержит класс, что использование зОго :: shred_ptr <>qt application and 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-creator. Но я не знаю точно, потому что я довольно новичок в программировании qt.

ответ

2

Убедитесь, что вы используете флаг C++ 11 для компилятора. Например, в вашем .pro -файла:

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.

Смежные вопросы