尝试访问类向量中的函数,而不更改向量的私有状态
Trying to access a function in a vector of classes w/o changing the private-status of the vector
我正在尝试找到一种方法来使以下代码段工作,而无需将betasAlphaVector的访问从私有更改为公共。也许一个返回指向所选元素元素的指针的函数,然后可以工作?我不知道。受阻和沮丧。请帮忙吗?
#include <algorithm>
#include <condition_variable>
#include <vector>
using namespace std;
class Alpha {
private:
int anInt;
public:
Alpha(int arg) { anInt = arg; }
Alpha(const Alpha& orig) { }
virtual ~Alpha() { }
void Printf() { printf("%s: anInt = %dn", __func__, anInt); }
};
class Beta {
private: // Can not change protection (private) status of betasAlphaVector
std::vector<std::unique_ptr<Alpha>> betasAlphaVector;
public:
int maxAlphas;
public:
Beta(int arg) { maxAlphas = arg; }
Beta(const Beta& orig) { }
virtual ~Beta() { }
void AddAlpha(int arg) { betasAlphaVector.emplace_back(new Alpha(arg)); }
int SizeAlpha() { return (int) betasAlphaVector.size(); }
};
#define MaximumAlphas 3
int main(int argc, char** argv) {
Beta *beta = new Beta(MaximumAlphas);
for (int i = 0; i < beta->maxAlphas; i++)
beta->AddAlpha(i*10);
printf("%s: Alpha vector size = %dn", __func__, beta->SizeAlpha());
beta->betasAlphaVector.at(1)->Printf();
return 0;
}
你几乎给出了答案:
也许是一个返回指向所选元素的指针的函数 元素,然后可以工作
将其转换为代码(为简洁起见,省略了其他代码):
class Beta {
public:
Alpha* GetAlpha( int index ) { return betasAlphaVector.at( index ).get(); }
const Alpha* GetAlpha( int index ) const { return betasAlphaVector.at( index ).get(); }
};
第二个重载使您能够调用GetAlpha()
方法,即使Beta
对象声明为const
。
在main()
:
beta->GetAlpha( 1 )->Printf();
相关文章:
- 写入向量<向量<bool>>
- 函数向量_指针有不同的原型,我可以构建一个吗
- std::向量与传递值的动态数组
- 将值指定给向量(2D)的向量中的某个位置
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 如何使用向量的template_back函数
- 尝试通过多个向量访问变量时,向量下标超出范围
- 如何通过派生类函数更改基类中的向量
- C++从另一个类访问公共静态向量的正确方法是什么
- 如何将ampl中的集合表示为c++中的向量
- 变量没有改变?通过向量的函数调用
- 迭代时从向量和内存中删除对象
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- 尝试访问类向量中的函数,而不更改向量的私有状态
- 犰狳与 Boost Odeint 冲突:Odeint 在集成期间将状态向量调整为零
- 用于填充向量的c++有状态函子
- 为什么存储在 STL 向量中的堆栈分配元素C++即使超出范围也仍然处于活动状态
- 如果我在c++类中声明一个向量,它是否会被销毁,然后类的状态也会被销毁
- 按状态排列向量中的元素
- 使用 Boost::odeint 和 Eigen::Matrix 作为状态向量