0
ベータ版のアクセスをプライベートからプライベートに変更することなく、次のコードを動作させる方法を探しています。パブリック。おそらく、選択された要素の要素へのポインタを返す関数は、次に動作しますか?知りません。苦しいと不満。助けてください?ベクタのプライベートステータスを変更しないでクラスのベクタ内の関数にアクセスしようとしています
#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 = %d\n", __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 = %d\n", __func__, beta->SizeAlpha());
beta->betasAlphaVector.at(1)->Printf();
return 0;
}
1つの提案:)(これはSTD 'の戻り値の型::ベクトル::サイズがあるので、ベータ版:: SizeAlphaは()' 'size_t'型の値を返す'作ります'。これは通常、符号なしの整数です。なぜなら、サイズは決してゼロより小さくならないからです。 'int 'は(ほとんどのプラットフォームで)32ビットのままですが、' size_t'は通常64ビットの符号なし整数にマップされるため、64ビットプログラムの方が優れています。 – zett42
面白いです。私は仕事中のグループにこの問題を送った。あなたが示唆したように私は返されたデータ型としてsize_tを持っていて、彼らは皆不平を言った。だから、私はこのように投稿した。仰るとおりです。あなたの友人を聞かないでください。 –
彼らはどのように主張したのでしょうか? – zett42