#include<iostream>
#include<vector>
#include<string>
using namespace std;
class AAA {
private:
vector<double> v;
public:
AAA(int n);
void AAAprint();
void testfn(AAA &aaa);
};
AAA::AAA(int n){
v=vector<double>(n,0);
}
void AAA::AAAprint(){
for (int i=0;(unsigned int) i<v.size();i++)
{
std::cout<<v[i]<<" ";
}
std::cout<<std::endl;
}
void AAA::testfn(AAA &aaa)
{
aaa.v[0]=5;
}
int main(){
AAA aaa(25);
aaa.AAAprint();
AAA bbb(25);
bbb.testfn(aaa);
aaa.AAAprint();
}
メインでは最初にaaaを作成し、その値を出力します。 bbb.testfn(aaa)
を呼び出した後にaaa
が変更されました。 void AAA::testfn()
では、aaa.v
に直接アクセスできました。aaa.v[0]
の値は実際にはvoid AAA::testfn()
の外部に変更されています。私はmain関数の最後にaaa.vを出力しているので、それはそうです。これの理由は何ですか?C++では、クラス内のプライベートコンテンツのベクトル<double> :: begin()を呼び出すことができますか?
@JohnKugelman更新されました。 – Resorter
さて、クラスAAAのスコープから呼び出していますか? – aschepler
@ascheplerはい。 – Resorter