问题描述
我试图在我的自定义向量类上使用完美转发(在某种意义上模仿 std::vector“emplace_back”)并从它定义的 dll 中导出它。
-
repeated_ptr_field.hpp
template<typename TMessage> class RepeatedPtrField { private: std::vector<std::unique_ptr<TMessage>> v_; public: RepeatedPtrField(const RepeatedPtrField& other) = delete; RepeatedPtrField& operator=(const RepeatedPtrField& other) = delete; RepeatedPtrField(); // Some things... TMessage* Add() { // This one is ok so far v_.push_back(std::make_unique<TMessage>()); return v_.back().get(); } template <typename ...Args> TMessage* Add(Args&& ...args) { // This one is giving me headaches v_.push_back(std::make_unique<TMessage>(std::forward<Args>(args)...)); return v_.back().get(); } // Some other things... };
-
repeated_ptr_field.cpp
template __declspec(dllexport) Value* RepeatedPtrField<Value>::Add(double&&,Currency&&,long&&);
-
value.hpp
class Value : public Message { // Some things... public: // Both constructors defined in .cpp __declspec(dllexport) Value(); __declspec(dllexport) Value(double value,Currency ccy,long timestamp); // This is the constructor that should be used by the Add(args...) method. // Some other things... };
我收到编译器错误:'Value::Value':没有重载函数需要 3 个参数
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)