从“char*”到“char”的转换无效

2023-12-25

我收到标题中的错误。它指向声明 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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从“char*”到“char”的转换无效 的相关文章