这里是我的代码。
MyClass.h:
当我进行编译时,编译器告诉我:
我不知道原因。有什么建议吗?
MyClass.h:
namespace ns{
template <typename A, typename B>
class MyClass{
struct MyStruct1;
struct MyStruct2;
struct MyStruct1{
/*not important here*/
};
struct MyStruct2{
MyStruct2(std::weak_ptr<MyStruct1> i1, std::weak_ptr<MyStruct1> i2, B i3):d1{i1}, d2{i2}, d3{i3} {};
std::weak_ptr<MyStruct1> d1;
std::weak_ptr<MyStruct1> d2;
B d3;
};
//Compare MyStruct2
static bool compareMyStruct2(std::weak_ptr<MyStruct2>& e1, std::weak_ptr<MyStruct2>& e2);
};
template<typename A, typename B>
bool MyClass<A, B>::compareMyStruct2(std::weak_ptr<MyStruct2>& e1, std::weak_ptr<MyStruct2>& e2){
return (e1->d3 < e2->d3);
}
}
当我进行编译时,编译器告诉我:
No member named 'd3' in 'std::_1::weak_ptr<ns::MyClass::MyStruct2'
我不知道原因。有什么建议吗?
class
/struct
声明后面加上分号(;
)。_@SuperMurloc_ 你的问题长期来看似乎没有用,请删除它。 - πάντα ῥεῖMyClass
应该是MyClass<A,B>
,而嵌套类MyStruct2
不能在MyClass
外部使用,除非加上MyClass<A,B>::
。 - O'Neilconst
引用会更好。 - O'Neil