我在 AIX OS 上使用 xlC_r 编译器编译代码时遇到问题。我在下面附上了导致问题的代码。我曾尝试使用 microsoft 编译器在 MS Windows 上编译代码,并在 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)
{}
};
提前致谢。