我必须创建一个模板类,该类将存储3种类型的od指针,但是每种类型的方法有点不同(例如,每种类型需要不同的类型,并且方法addElement中的参数数量要比其他类型少),存储在向量中的指针。 我的解决方案是使用病毒方法为每种类型编写派生类。
我收到一个错误:
g ++ -o程序main.o complexNumber.o complexVariable.o operator.o storage.o
storage.o:在函数NumStorage::NumStorage()':
storage.cpp:(.text+0x14): undefined reference to
storage :: storage()'中
collect2:错误:ld返回1退出状态
makefile:4:目标“程序”的配方失败
#include <iostream>
#include <string.h>
#include <vector>
#include "complexVariable.h"
#include "complexNumber.h"
#include "operator.h"
#include "storage.h"
#include "functions.h"
using namespace std;
int main(){
storage<complex> a();
return 0;
}
#ifndef STORAGE_H
#define STORAGE_H
#include <iostream>
#include <vector>
#include <string.h>
#include "operator.h"
#include "complexNumber.h"
#include "complexNumber.h"
using namespace std;
template <class T>
class storage{
protected:
vector<T> data;
public:
storage();
void addElement();
void deleteElement(int number);
int size();
void replaceElement();
};
class NumStorage: public storage<complexNumber*>{
public:
NumStorage();
void addElement(float real, float imaginary);
};
#endif
#include <iostream>
#include <vector>
#include "storage.h"
#include "operator.h"
#include "complexNumber.h"
#include "complexNumber.h"
using namespace std;
template <class T>
int storage<T>::size(){
return data.size();
}
template <class T>
void storage<T>::deleteElement(int number){
int toDelete = number-1;
delete data[toDelete];
data.erase(data.begin()+toDelete);
}
NumStorage::NumStorage(){}
void NumStorage::addElement(float real, float imaginary){
complexNumber* newItem = new complexNumber(real, imaginary);
data.push_back(newItem);
}
我希望有类模板(这是我的任务的一部分),每个类存储不同类型的od数据。 我还尝试过使用模板特殊性,但是一种数据类型需要3个参数来添加addElement()函数,而其他数据仅需要2个。如何解决它有任何想法吗?