为什么我从char转换为char的错误?

时间:2017-01-30 18:44:32

标签: c++

这是我的代码:

#include <iostream>
using namespace std;

bool funkcja (char * a[3][7], char * b[7]);

int main()
{

    char T[3][7]={{'A', 'L', 'A', 'M','A', 'k', 'o'},
            {'M', 'A','M','K','O','T','A'},
            {'T', 'E','Q','U','I','L','A'}};

    char tab[7]={ 'A', 'L', 'A', 'M','A', 'k', 'o' }; 

    cout<<funkcja(T, tab)<<endl;

    return 0;
}

bool funkcja (char * a[3][7], char * b[7])
{
    int licznik=0;

    for (int i=0;i<3;i++)
    {
        for (int j=0; j<7;j++)
        {
                if (a[i][j]==b[j])
                {
                    licznik++;
                    if (licznik==7) return true;
                }
                else {
                    licznik=0;
                }
        }
        licznik=0;
    }
    return false;
}

当我试图建立这个时,我得到:

[Error] cannot convert 'char (*)[7]' to 'char* (*)[7]' for argument '1' to 'bool funkcja(char* (*)[7], char**)'

3 个答案:

答案 0 :(得分:6)

您的功能定义不正确。你需要改变:

bool funkcja (char * a[3][7], char * b[7])

为:

bool funkcja (char a[3][7], char b[7])

请注意,您可以省略第一个数组维度,因此可以将其缩减为:

bool funkcja (char a[][7], char b[])

答案 1 :(得分:2)

您的funkcja接受了两个指针数组,但您传递的是字符数组。

您应将签名更改为:

bool funkcja (char a[][7], char b[]);

答案 2 :(得分:0)

传递的参数与app/reopens/link-component.js中的参数类型之间存在类型不匹配。其他答案解释了这一点。此外,您还可以通过引用传递数组,最简单的方法是使用模板。这样你也可以在编译时传递它们的大小。:

[live]

import Ember from 'ember';

Ember.LinkComponent.reopen({
    init: function() {
        this._super();
        var self = this;

        // bind attributes beginning with 'data-'
        Object.keys(this).forEach(function(key) {
            if (key.substr(0, 5) === 'data-') {
                self.get('attributeBindings').pushObject(key);
            }
        });
    },
});