D:\c++\untitled4\widget.h:42: error: expected primary-expression before 'double' int x1 = centerX + radius * qCos(qDegreesToRadians<double>(i * 10)); ^
时间: 2024-02-10 18:03:53 浏览: 113
这个错误是因为模板参数不能放在函数名后面,而应该放在尖括号里面。你需要将模板参数放在函数名 qDegreesToRadians 的尖括号里面,例如:
```cpp
int x1 = centerX + radius * qCos(qDegreesToRadians<double>(i * 10));
```
这样就可以正确地指定模板参数了。
相关问题
D:\c++\untitled4\widget.h:42: error: call of overloaded 'qDegreesToRadians(int)' is ambiguous int x1 = centerX + radius * qCos(qDegreesToRadians(i * 10)); ^
这个错误是因为qDegreesToRadians()函数被重载了多次,编译器无法确定应该调用哪一个函数。你需要明确指定调用哪一个函数,可以使用强制类型转换或者重载函数的参数类型来解决这个问题。例如:
```cpp
int x1 = centerX + radius * qCos(qDegreesToRadians<double>(i * 10)); // 明确指定为 double 类型
```
或者在函数调用前定义一个 double 类型的变量,然后将其作为参数传递给 qDegreesToRadians() 函数,例如:
```cpp
double angle = i * 10;
int x1 = centerX + radius * qCos(qDegreesToRadians(angle)); // 使用 double 类型的变量作为参数
```
这样就可以解决这个编译错误了。
D:\c++\untitled4\widget.h:45: error: call of overloaded 'qDegreesToRadians(int&)' is ambiguous int x1 = centerX + radius * qCos(qDegreesToRadians(a)); ^
这个错误是因为qDegreesToRadians()函数被重载了多次,编译器无法确定应该调用哪一个函数。你传递给qDegreesToRadians()函数的参数a是一个引用类型的变量,而引用类型的变量并不是常量表达式,因此编译器无法确定应该调用哪一个重载版本的函数。
要解决这个问题,你可以将参数a作为一个常量表达式传递给qDegreesToRadians()函数,例如:
```cpp
int x1 = centerX + radius * qCos(qDegreesToRadians(static_cast<double>(a)));
```
这样就可以解决这个编译错误了。
阅读全文