我很难找到调用使用模板的类构造函数的解决方案。
- 标题文件
template <class Item>
class Binary_tree
{
string file_name;
list<Item> arr_data;
public:
Binary_tree(string fname);
void printArr();
};
- cpp文件
template <typename Item>
Binary_tree<Item>::Binary_tree(string fname)
{
File_Name = fname;
total = 0;
root = nullptr;
std::ifstream filestream(fname);
string line;
while (!filestream.eof())
{
filestream >> line;
arr_data.push_back(line);
}
}
template <typename Item>
void Binary_tree<Item>::printArr()
{
int size = arr_data.size();
for (int i = 0; i < size; i++)
{
cout << "arr_data [" << i << "] is: " << arr_data[i] << endl;
}
}
- main.cpp中
int main(int argc, char** argv)
{
Binary_tree<string> test(file);
test.printArr();
return 0;
}
现在我收到了LNK1120和LNK2019错误。
答案 0 :(得分:3)
注意:这个答案回答了原始问题,该问题被完全不同的问题所取代!
声明适用于the Most Vexing Parse:
中描述的功能Binary_tree<string> test(Binary_tree<string>(file));
这声明了一个名为test()
的函数,返回Binary_tree<string>
并接受一个名为Binary_tree<string>
的参数或类型file
。以下是修复问题的变体:
Binary_tree<string> test0(file);
Binary_tree<string> test1 = Binary_tree<string>(file);
Binary_tree<string> test2{Binary_tree<string>(file)};
答案 1 :(得分:0)
您遇到了most vexing parse。
Binary_tree<string> test(Binary_tree<string>(file));
这是一个函数声明,就像
一样Binary_tree<string> test(Binary_tree<string> file);
...声明了一个名为test
的函数,该函数接受Binary_tree<string>
作为参数,并返回Binary_tree<string>
。