此错误通常是因为函数参数类型与 std::make_shared 创建的对象类型不匹配,可以通过显式转换或更改函数参数类型来解决。例如:
#include
class MyClass {
public:
MyClass(int num) : m_num(num) {}
int m_num;
};
void myFunction(std::shared_ptr obj) {
// do something
}
int main() {
int num = 42;
// 以下代码会引发 C2664 错误
std::shared_ptr newObj = std::make_shared(num);
myFunction(newObj);
return 0;
}
在上述代码中,myFunction 函数期望的是一个 std::shared_ptr
int num = 42;
std::shared_ptr newObj = std::make_shared(static_cast(num));
// 或者
std::shared_ptr newObj = std::make_shared(static_cast(*new int(num)));
myFunction(newObj);
上一篇:编译器错误C2440无法将IMAGE_NT_HEADERS64用于初始化类型为IMAGE_NT_HEADERS的实体。
下一篇:编译器错误CS0029:无法隐式转换类型System.Net.Http.HttpResponseMessage。