我有一个Data类,其中包含来自Eigen Template Library的VectorXf
对象。这个vector
对象有一个构造函数,它接受一个int
来定义要分配的内存量。但是,在编译时不知道这个数字。
无论如何,我要做的是在我的Data类头文件中声明VectorXf对象,然后在构造Data对象期间构造该VectorXf对象。我是c ++的新手,所以我对如何做到这一点感到困惑。我一直收到错误消息undefined reference to Data::vector(int)
我做错了什么?
以下是我的Data类的头文件Data.h
:
#ifndef DATA_H
#define DATA_H
#include <Eigen/Eigen>
using namespace Eigen;
using namespace std;
class Data
{
public:
Data(string file);
virtual ~Data();
void readFile(string file);
private:
VectorXf vector(int n);
};
#endif // DATA_H
因此,正如您从上面的头文件中看到的那样,data
对象包含一个以整数作为参数的向量对象。
以下是Data.cpp
文件:
#include "Data.h"
#include <iostream>
#include <string>
#include <Eigen\Eigen>
#include<fstream>
using namespace Eigen;
using namespace std;
Data::Data(string file)
{
readFile(file);
}
void Data :: readFile(string file){
int n = ... // read file length using fstream
vector(n); //construct the VectorXd object that was declared in Data.h
}
Data::~Data()
{
//dtor
}
为清楚起见,我的主要功能需要发生什么:
Data data("myfile.txt")
创建一个Data
对象。然后读取文件长度,因为Data构造函数调用readFile()
,它确定构造VectorXf
类成员的Data
对象的适当长度。在这种情况下,引用和构造类成员对象的正确方法是什么 - VectorXf vector
。