gpt4 book ai didi

c++ - 从一个类到另一个类直接访问存储在 vector 中的数据

转载 作者:行者123 更新时间:2023-11-30 03:58:44 36 4
gpt4 key购买 nike

我有一个名为表的类,它有一个 vector 作为公共(public)成员,这个表类调用一个方法将数据添加到 vector 中。现在我想访问存储在 vector 中的这些数据,从表类到 NextClass。我尝试使用继承,例如 NextClass:table 工作正常但实际上 NextClass 不是表类它是一个“与 Table 类有关系”,我还尝试将表类的类实例变成 NextClass,但是这样做将不允许我访问 vector 中的数据,因为它返回一个空 vector 。请查看我要实现的目标的抽象代码

表类:

class Table
{
public:
Table();
vector<vector<float> > vec; //innitializing vector
void addTableData(); //method to add data in vector
}

现在我有另一个类 NextClass

    class NextClass
public:
NextClass();
vector<vector<float> > nextVector; //new vector to store value from above class
vector<float> innervec;
void copyVectorToThisClass(); // method to copy vector from table class to this class
private:
Table table; //also tried with making pointer Table *table but no luck

从表中复制 vector 数据到下一个类的方法

void NextClass::copyVectorToThisClass(){   
for( int i = 0; i<vec.size();i++)
for (unsigned int ii=0; ii<table.vec.size();ii++)
{
innervec.assign(table.vec[i].begin()+ii,table.vec[i].end());
//also tried with vec.pushback
}
nextVector.push_back(innervec);
}

编译时没有错误,但是当我尝试检查 newVector 是否包含任何数据时,它返回空,这意味着新 Vector 中没有数据传输,如果有一种方法可以操纵指针指向内部数据然后类表就可以很好地完成这段代码..

编辑代码

表类:

class Table
{
public:
Table();
void addTableData(); //method to add data in vector
private:
vector<vector<float> > vec; //innitializing vector
}

现在我有另一个类 NextClass

class NextClass
public:
NextClass();
vector<vector<float> > nextVector; //new vector to store value from above class
vector<float> innervec;
void copyVectorToThisClass(); // method to copy vector from table class to this class
Table table; //also tried with making pointer Table *table but no luck
A method to copy vector data from table to Next class
void NextClass::copyVectorToThisClass(){
for( int i = 0; i<vec.size();i++)
for (unsigned int ii=0; ii<table.vec.size();ii++)
{
innervec.assign(table.vec[i].begin()+ii,table.vec[i].end());
//also tried with vec.pushback
}
nextVector.push_back(innervec);
}

非常感谢。

最佳答案

你似乎有一些概念上的错误:

  • 您有一个表作为 nextClass 的成员,那么为什么要将它从表复制到 nextVector?这似乎是重复的数据,而且通常非常糟糕。
  • 您将表中的 vec 属性公开,这通常不是一个好主意。

我建议你采用以下结构:

将 copyVector 改为 table,因为 vec 是 table 的一部分,谁对复制或不复制他的数据有最终决定。

class table
{
....
void getVector( const vector<float>& next ) const
}

void table::getVector( vector<float>& next ) const
{
next = vec; //default = operator
}

然后,您可以像这样在 NextClass 中使用它:

void NextClass::copyVectorToThisClass( const table& t)
{
t.getVector( nextVector );
}

(好吧,代码是“即时”生成的,可能有错别字)

关于c++ - 从一个类到另一个类直接访问存储在 vector 中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27284535/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com