从'char*'到'char'的转换无效
invalid conversion from 'char*' to 'char'
我在标题中得到错误。它指向声明for循环的那行。有什么想法吗?
#include <iostream>
template <typename T>
T max(T* arr, size_t n)
{
if (!n)
throw("Can't take the max of an empty array, bro.");
T top = arr[0];
for (T* i(arr+1), j(arr+n); i != j; ++i)
if (*i > top)
top = *i;
return top;
}
int main()
{
char S[] = "kjadkjhdjasjkdaskjdsahd";
std::cout << max(S, strlen(S));
return 0;
}
行内:
for (T* i(arr+1), j(arr+n); i != j; ++i)
只有i被声明为指向T的指针,j被声明为T的实例,正确的声明是:
for (T* i(arr+1),* j(arr+n); i != j; ++i)
顺便说一下,你应该为strlen添加include:
#include <cstring>
这是多个逗号分隔的指针变量声明的常见错误。修改for循环头,如下所示:
for (T *i(arr+1), *j(arr+n); i != j; ++i) {
// ^ Note the additional asterisk!
}
相关文章:
- 将无符号char*转换为std::istream*C++
- 为什么这个函数将"const char*"转换为"void* const"而不是"const void*"
- 将函数参数"const char*"转换为"std::string_view"是
- C ++如何在使用"tolower"时将char转换为int
- 有没有办法在C++的赋值中将"char**"转换为"double"?
- JavaCPP 错误:无法将参数"1"的"char*"转换为"Abc*
- 为什么从 char 转换为 std::byte 可能是未定义的行为?
- 如何在虚幻引擎4中将char*转换为TCHAR?
- C++:将模板类型 char 转换为 std::string
- strcmp/char* 转换无法按预期工作
- C++中的SQLite char*转换
- 无法从 const char* 转换为 const char *&
- 在 C++ 中将 char 转换为 int,而无需符号位传播
- 如果必须包含西里尔字符,如何将 char* 转换为 std::string?
- 试图使用strCMP时的char转换错误
- 无法从'const char *'转换为'LPCTSTR'
- 将 std::vector<char> 转换为字符* 会导致字符缺陷
- 使用 static_cast 将 char 转换为 int c++
- 如何在 C++(MFC) 中将 char* 转换为 LPCTSTR
- 无法将const char转换为字符串构造字符串