1
我已经看到许多与此问题相关的问题,但仔细听从成员的建议后,我的问题仍然存在。代码很简单。我只有下面的头文件(“instrument.h”),其中包含了基类和模板类:C++中的模板继承和Xcode中未定义的符号
#include <stdio.h>
#include <string>
using namespace std;
class Instrument
{
public:
Instrument();
virtual void print() const = 0;
};
template <class parameter> class Equity : public Instrument
{
public:
Equity();
virtual void print() const;
};
现在,在我的main.cpp中的主要功能,我只做到以下几点:
#include "instrument.h"
#include <iostream>
int main() {
Equity<double> pb;
return 0;
}
好了,我得到了非常著名的错误:
Undefined symbols for architecture x86_64:
"Equity<double>::Equity()", referenced from:
_main in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我已经在构建设置已经改变了C++标准库与libstdC++,也为默认的编译器,等等。我的项目设置有问题吗?模板可能被错误地实现了吗?我在想我也应该有一个instrument.cpp文件,但是模板的定义必须保存在头文件中,这样可能会崩溃。
在此先感谢
感谢您的回答,但不幸的是,这些选项都不起作用,不断得到相同的错误。 – Adam 2014-10-30 13:05:16
@Adam您必须更改这两个类模板。查看我的编辑。 – Columbo 2014-10-30 13:11:17
相应地改变了,甚至尝试了几种组合,仍然是相同的错误。 – Adam 2014-10-30 13:23:37