C2244 - 无法将函数定义与现有声明匹配

时间:2014-09-15 16:15:13

标签: c++ templates inline

所以我得到了下面的代码,我一直在浏览这个网站上的问题,以及我在谷歌上发现的任何其他内容,但我无法理解它...... S.O.S。

template <class C>
class Cod
{
private:
    SirString *sir_string;
    SirBinar *sir_binar;
    C* char_la_binar(C c);
    C* string_la_binar(C *s);
    C* binar_la_char(C *cod_binar);
    C* binar_la_string(C *cod_binar);

public:
    Cod();
    Cod(SirBinar *sb);
    Cod(SirString *ss);
    C* vezi_string();
    C* vezi_binar();
    void codificare();
    void decodificare();
};

template <class C>
inline char* Cod<C>::char_la_binar(C c)
{
    C *cod_binar = (C*) malloc (sizeof(C));
    strcpy(cod_binar, "");

    int aux = (int)c;
    while(aux)
    {
        if(aux%2 == 0) 
            strcat(cod_binar, "0");
        else
            strcat(cod_binar, "1");
        aux/=2;
    }
    cod_binar = strrev(cod_binar); //
    return cod_binar;
}

错误11错误C2244:'Proj :: Cod :: char_la_binar':无法将函数定义与现有声明匹配

任何想法,消化?

1 个答案:

答案 0 :(得分:1)

您声明函数返回C*

C* char_la_binar(C c);
^^

但定义它以返回char*

inline char* Cod<C>::char_la_binar(C c)
       ^^^^^

从函数体看,声明看起来是正确的,定义应该更改为C*