大家好我有以下课程:“Verification.h”
#ifndef VERIFICATION_H
#define VERIFICATION_H
#include <vector>
#include <string>
#include <dlib/svm.h>
using namespace dlib;
using namespace std;
class Verification
{
public:
Verification(std::string, std::vector<string>,const int);
virtual ~Verification();
void Verify();
private:
std::vector<std::string> groundTruth;
std::string path;
const int rows;
};
#endif // VERIFICATION_H
Verification.cpp
#include "Verification.h"
Verification::Verification(string p, std::vector<string> gt,const int r):path(p),groundTruth(gt),rows(r)
{
}
Verification::~Verification()
{
//dtor
}
void Verification::Verify()
{
//Load ground truth and build matrix
typedef matrix<double, rows, 9> sample_type;
typedef radial_basis_kernel<sample_type> kernel_type;
}
问题:我正在尝试初始化:
typedef matrix<double, 9,1> sample_type;
但我得到以下错误:
我该如何解决?
谢谢。
基于MM答案的编辑:
//Load ground truth and build matrix
typedef matrix<double> data;
data data_type;
data_type.set_size(9,1);
答案 0 :(得分:4)
变量rows
应该在编译时知道。
如果您想使用常数而不是数字,则可以将其设为static constexpr
,例如:
static constexpr int rows = 1;
typedef matrix<double> data;
它声明了一个名为data
的新类型,类型为matrix<double>
,而不是对象。试试这个:
typedef matrix<double> data_type;
data_type data;
data.set_size(rows,9);
答案 1 :(得分:2)
这一行
typedef matrix<double> data;
定义名为data
的类型(类型名称非常差)。
您很可能只想删除typedef
:
matrix<double> data;
data.set_size(rows,9);