所以,我有一个链接问题。答案可能很简单,但我想我很烦。我定义了一个用于计算需要stringstream的东西的类。LNK2019与模板
头文件中的有关章节:
#include <sstream>
using namespace std;
template<class T>
class Finder {
public:
Finder(istringstream& input) {};
~Finder() {};
template<typename T> Finder(T& input) {};
template<typename T> ~Finder() {};
T check(istringstream&);
template<typename T> friend ostream& operator << (ostream&, Finder<t>&);
};
template<class T>
T Finder<T>::check(istringstream& input)
然后我的驱动程序文件的最后一次调用:
#include <sstream>
#include <string>
#include <iostream>
#include "Finder.h"
using namespace std;
int main(int argc, char** argv) {
Finder<int> thing;
string expression;
getline(cin, expression);
while(expression[0] != 'q') {
try {
int result = thing.check(istringstream(expression));
错误是: 1> driver.obj:错误LNK2019:无法解析的外部符号“public:__thiscall Finder :: Finder(void)”(?? 0?$ Finder @ H @@ QAE @ XZ)在函数中引用_main
1> driver.obj:error LNK2019:无法解析的外部符号“publi c:__thiscall Finder ::〜Finder(void)“(?? 1?$ Finder @ H @@ QAE @ XZ)在函数__catch中引用$ _main $ 0
什么是*:'〜Finder(T)'析构函数没有参数。它应该是'〜Finder()',没有模板参数,也没有模板参数集。或者,您的流插入器朋友中的“Finder'?请发布*真实*代码。 * *确切*错误消息逐字*总是*一个好主意。 –
WhozCraig
首先,错误消息: 1> driver.obj:error LNK2019:无法解析的外部符号“public:__thiscall Finder :: Finder (void)”(?? 0?$ Finder @ H @@ QAE @ XZ)参考函数_main 1> driver.obj:error LNK2019:无法解析的外部符号“public:__thiscall Finder ::〜Finder (void)”(?? 1?$ Finder @ H @@ QAE @ XZ)在函数__catch $ _main $ 0 –
在问题**中发布错误**。另外,'thing.check(istringstream(expression))'不是有效的标准C++。如果你使用非标准的编译器扩展(如VC++),它可能会工作,但它不是标准的。 – WhozCraig