AIX OS で xlC_r コンパイラーを使用したコードのコンパイルに問題があります。問題の原因となっているコードを以下に添付しました。MS Windows で Microsoft コンパイラを使用してコードをコンパイルしようとしましたが、Linux で gcc を使用してコンパイルしたところ、すべて正常に動作しました。私が得るコンパイラエラーは次のとおりです。
"...../ABC.h", line 12.22: 1540-0063 (S) テキスト "<" は予期しないものです。
インターネットを検索したところ、いくつかのリソース (リンクとリンク) が見つかりましたが、ソリューションをコードに統合する方法がわかりません。考えられる解決策の 1 つは、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)
{}
};
前もって感謝します。