这是什么错converting from ‘unsigned int (ScanManager::*)(char*, unsigned int)’ to ‘void*’ [-Wpmf-conversions]
时间: 2023-03-06 21:22:05 浏览: 148
这是一个指针类型不匹配的编译错误,其中试图将一个成员函数指针转换为一个void指针,而这种类型转换通常是不安全的。
更具体地说,该错误指出了在尝试将一个名为 `ScanManager::*` 的成员函数指针转换为一个 `void*` 指针时出现了问题。这可能是因为您在代码中尝试了类似以下的操作:
```
ScanManager scanner;
void* ptr = &scanner.scan; // 试图将成员函数指针转换为void指针
```
这种类型的转换可能会导致未定义的行为,因为成员函数指针需要知道其所属的类的指针才能调用,而 `void*` 类型没有足够的信息来进行这种调用。
要解决这个问题,您可能需要重新考虑代码逻辑,以避免将成员函数指针转换为 `void*`。如果您确实需要将函数指针传递给某个函数,可以考虑使用函数指针类型或std::function类型进行类型匹配。
相关问题
Springboot配置SQL server数据源时,报错: ERROR o.s.b.diagnostics.LoggingFailureAnalysisReporter:40 - *************************** APPLICATION FAILED TO START *************************** Description: Failed to bind properties under 'spring.datasource.dynamic.datasource.validationquery' to com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty: Reason: org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [java.lang.String] to type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty] Action: Update your application's configuration Disconnected from the target VM, address: '127.0.0.1:53347', transport: 'socket' Process finished with exit code 1,如何解决?
这个错误信息显示了SpringBoot应用程序启动失败,并且无法将属性绑定到SQL Server的数据源上。具体原因是无法将字符串类型转换为DataSourceProperty类型的转换器未找到。这可能是由于你的应用程序配置不正确或者缺少必要的依赖项所致。
为了解决这个问题,你可以执行以下步骤:
1. 检查应用程序的配置文件(如application.yml或application.properties)是否正确地配置了SQL Server的数据源。
2. 确认你的应用程序中是否包含了正确的依赖项。如果你使用的是SpringBoot 2.x版本,则需要在pom.xml文件中添加以下依赖项:
```xml
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>8.4.1.jre8</version>
</dependency>
```
3. 确认你的应用程序中是否包含了正确的依赖项。如果你使用的是SpringBoot 1.x版本,则需要在pom.xml文件中添加以下依赖项:
```xml
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.0</version>
</dependency>
```
4. 如果以上步骤都无法解决问题,你可以尝试升级SpringBoot或联系Spring社区获取更多帮助。
--------------------配置: mingw5 - CUI Debug, 编译器类型: MinGW-------------------- 检查文件依赖性... 正在编译 C:\Users\Administrator\Desktop\lab2.cpp... [Error] C:\Users\Administrator\Desktop\lab2.cpp:32: error: `getpid' was not declared in this scope [Warning] C:\Users\Administrator\Desktop\lab2.cpp:33: warning: converting to `int' from `float' [Warning] C:\Users\Administrator\Desktop\lab2.cpp:34: warning: converting to `int' from `float' 构建中止 lab2: 1 个错误, 2 个警告
这个错误提示是因为在程序中使用了未定义的函数 `getpid()`,这个函数一般是在 `unistd.h` 头文件中定义的,在 Windows 平台上可能需要使用替代函数。同时,程序中还有两个警告,分别是将 `float` 类型转换为 `int` 类型可能存在精度损失。建议在程序中包含 `unistd.h` 头文件,并使用适当的函数替代 `getpid()` 函数。同时,如果需要将 `float` 类型转换为 `int` 类型,可以使用 `round()` 函数四舍五入后再进行转换。
阅读全文