我正在尝试使用具有可选值的映射初始化 shared_ptr。我将在程序的稍后阶段初始化这些值。
我阅读了以下帖子并将其用作指南:如何在不为 std::map 指定值的情况下添加有效键?
但我的情况有点不同,因为我使用的是 shared_ptr。废话不多说,这是我写的代码:
着色程序.h
...
#include <map>
#include <boost/shared_ptr.hpp>
#include <boost/optional.hpp>
typedef map<string, optional<GLuint> > attributes_map;
class ShaderProgram
{
public:
ShaderProgram(vector<string> attributeList);
...
private:
shared_ptr<attributes_map> attributes;
};
着色器程序.mm
ShaderProgram::ShaderProgram(vector<string> attributeList)
{
// Prepare a map for the attributes
for (vector<string>::size_type i = 0; i < attributeList.size(); i++)
{
string attribute = attributeList[i];
attributes[attribute];
}
}
编译器通知我以下错误:类型“shared_ptr”不提供下标运算符。
有人知道可能是什么问题吗?