我有一个错误,说“列”必须具有类类型。
vector<Column*>
是指针的向量,其中Column
是抽象类,因为我的列可以是int
,double
或string
类型。
class Table {
vector<Column*> _columns;
Column* value;
char* name;
public:
Table() {...}
Table(char* name) {...}
~Table() {...}
template <typename T>
void addColumn(vector<T> v) {
auto column = DataColumnFactory::getColumn();
column.get()->addValuesToVector(v);
_columns.push_back(move(column));
}
int findLongestColumn() {
int length = 0;
for (auto &column : _columns) {
if (length < column.get()->lengthOfColumn()) //ERROR
length = column.get()->lengthOfColumn();
}
}
};
答案 0 :(得分:1)
似乎问题在于您正在访问.get()
对象的Column
方法,该方法是一个指针(编译器抱怨这不是类类型。)只需更改{{1} }到.get
。