Текст & lt; & quot; неожиданно при компиляции с компилятором Xlc_r IBM

У меня проблема с компиляцией кода с помощью компилятора xlC_r в ОС AIX. Я приложил свой код ниже, который вызывает проблему. Я пытался скомпилировать
код на MS Windows с компилятором Microsoft, а также скомпилировал его под Linux с помощью gcc, и все работало нормально. Я получаю следующую ошибку компилятора:

«….. / ABC.h», строка 12.22: 1540-0063 (S) «Текст»<«неожиданно.

Я искал в Интернете, и я нашел некоторые ресурсы (ссылка на сайт а также ссылка на сайт), Я не знаю, как интегрировать решение в мой код. Одно из возможных решений
было бы удалить shared_ptr и просто иметь значение указателя, но я не люблю самостоятельно управлять удалением указателя. Я был бы очень признателен за любую помощь.

ABC.h

#ifndef ABC_H
#define ABC_H

#include <vector>
#include <memory>

template<class SR_TYPE, class SM_TYPE>
class ABC {
private:
std::shared_ptr<SR_TYPE> mpRV;
std::vector<SM_TYPE>     mMsgs;

public:
ABC(void);
ABC(SR_TYPE* pReturnValue);
virtual ~ABC(void);
};    // ABC
template<class SR_TYPE, class SM_TYPE>
ABC<SR_TYPE, SM_TYPE>::ABC(void) {
}
template<class SR_TYPE, class SM_TYPE>
ABC<SR_TYPE, SM_TYPE>::ABC(SR_TYPE* pReturnValue) {
mpRV.reset(pReturnValue);
}
template<class SR_TYPE, class SM_TYPE>
ABC<SR_TYPE, SM_TYPE>::~ABC(void) {
}
#endif // ABC_H

ABC.cpp

#include "ABC.h"
class ABCExtended : public ABC<int, std::string> {
ABCExtended() :
ABC<int, std::string>()
{}
ABCExtended(int* pReturnValue) :
ABC<int, std::string>(pReturnValue)
{}
};

Заранее спасибо.

1

Решение

shared_ptr из TR1, поэтому его следует использовать из этого пространства имен

менять
std :: shared_ptr mpRV;
в
std :: tr1 :: shared_ptr mpRV;

Компилировать с
-D__IBMCPP_TR1__

0

Другие решения

xlC не соответствует C ++ 11. Shared_ptr недоступен в std :: namespace. У него есть специальное пространство имен для «экспериментальных» функций, и shared_ptr может быть там. Эти эксперименты находятся в std :: tr1, и вам нужно скомпилировать с __ IBMCPP_TR1__.

1

По вопросам рекламы [email protected]