我是一个C++的初学者,我有一些类似这样的代码:
当我尝试编译这段代码时,在第952行的函数
我试图使用一些基本的指针,比如int,但这仍然没有起作用。
#include <iostream>
#include <utility>
#include <map>
#include <unordered_map>
template<typename T,typename EX>
class Attachable
{
static std::unordered_map<T*,Attachable<T,EX>> attachCaches;
std::unordered_map<std::string,EX> datas;
Attachable(T* sender):m_attachedObj(sender)
{
}
bool operator==(const Attachable& other)const
{
return m_attachedObj == other.m_attachedObj;
}
public:
static Attachable<T,EX> attach(T* sender)
{
if(attachCaches.find(sender)==attachCaches.end())
{
attachCaches.insert(std::make_pair((sender),Attachable<T,EX>(sender)));
}
return attachCaches[(sender)];
}
void set(std::string key,EX properties)
{
datas.insert(key,properties);
}
EX get(std::string key)
{
return datas.at(key);
}
private:
T* m_attachedObj;
};
class Tester
{
public :
Tester(){}
};
int main()
{
Tester* a =new Tester();
Attachable<Tester,std::string>::attach(a).set("test","typeOfInt");
std::cout<< Attachable<Tester,std::string>::attach(a).get("test");
}
当我尝试编译这段代码时,在第952行的函数
emplace(*_First);
处会收到一个错误。 template <class _Iter, class _Sent>
void _Insert_range_unchecked(_Iter _First, const _Sent _Last) {
for (; _First != _Last; ++_First) {
emplace(*_First);
}
}
我试图使用一些基本的指针,比如int,但这仍然没有起作用。
int* a =new int(4);
Attachable<int,std::string>::attach(a).set("test","typeOfInt");
std::cout<< Attachable<int,std::string>::attach(a).get("test");
int* a = new int(4);
这段代码有点不太好。 - Jarod42Attachable<X,XX>::attach(a).set("a key",XXXX);
来设置任意类型的值,所以int* a =new int(4)
只是为了测试,我已经知道这个例子不好,无论如何,感谢你的指导! - xiangyue qiuAttachable<X,XX>::attach(a).set("a key",XXXX);
来设置任何类型的值,所以int* a =new int(4)
只是为了测试,我已经知道这个例子不好,无论如何,感谢你的指导! - xiangyue qiu