我是一名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;
}
答案 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。这就是问题的原因。