GCC编译错误:'strlen'的声明必须可用

Nav*_*vid 5 c++ gcc compiler-errors

我的问题是,当我想创建一个下载的库时,我从GCC得到一些奇怪的编译错误,编译器要求纠正的代码似乎是正确的.

错误都是这样的:

Catalogue.h:96:错误:'strlen'没有依赖于模板参数的参数,因此'strlen'的声明必须是可用的

这是第96行的代码:

GaCatalogueEntry(const char* name, T* data)
{
    if( name )
    {
        _nameLength = (int)strlen( name ); // LINE 96

        // copy name
        _name = new char[ _nameLength + 1 ];
        strcpy( _name, name );       // LINE 100: similar error

        _data = data;

        return;
    }

    _name = NULL;
    _nameLength = 0;
    _data = NULL;
}
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能解决这些编译错误?

Cha*_*via 10

您可能只需要包含包含strcpy和strlen库函数的标头.

#include <string.h>
Run Code Online (Sandbox Code Playgroud)

或(最好是C++)

#include <cstring>
Run Code Online (Sandbox Code Playgroud)


Pro*_*ica 3

该代码有错误。您可能缺少一个#include <string.h>.

如果您不想更改代码,请添加-fpermissive到编译器选项。(请参阅GCC 文档。)