错误:没有匹配函数来调用(无法解决?)

时间:2017-11-07 00:40:36

标签: c++ templates compiler-errors

我是一名c ++初学者。我试图用结构名称作为模板参数来实例化一个类的三个数组。从那里,我想循环并调用mutator函数来设置数组中的值。

int main()
{
    GenericRecord<Furniture> furnObj[10][3];
    GenericRecord<Building> buildObj[10][3];
    GenericRecord<Computer> compObj[10][3];

    Building b;
    Furniture f;
    Computer c;

    for (int i = 0; i < 3; i++)
    {
        cout << "Enter the identifier for the furniture: ";
        cin >> f.Identifier;
        furnObj[i][0].setRecord(f.Identifier);
    }
    return 0;
}

我不断收到编译错误如下:

  

error: no matching function for call to 'GenericRecord<Furniture>::setRecord(int&)' note: candidate is: note: void GenericRecord<Type>::setRecord(Type) [with Type = Furniture]

我尝试过这100种不同的方式,我不断遇到不同类型的编译器错误。我做错了什么?

这是模板类,成员和结构:

struct Furniture
{
    int Identifier;
    string Description;
    float Value;
};

template <class Type>
class GenericRecord
{
    private:
        Type record;
    public:
        void setRecord(Type recParam);
};

template<class Type>
void GenericRecord<Type>::setRecord(Type recParam)
{
    record = recParam;
}

1 个答案:

答案 0 :(得分:1)

(如果您是C ++初学者,我认为您不应该直接进入模板,但无论如何......)

GenericRecord

这会创建一个setRecord(Type recParam)个对象数组,其中Type = Furniture。由于Type = Furniture,这意味着setRecord()期望接收Furniture对象。

但是你用f.Identifier调用 <?php include('connection.php'); $y=mysql_query("select * from `addbooks`"); while($z=mysql_fetch_array($y)){ echo '<a href="deletebooksdb.php?id=' . $z['id'] . '" class="delete">Delete</a> } ?> ,这是一个int。这就是问题的原因。