は、私はそのC++ - リターンC++ 11のstd ::配列
#define SIZE 10
Class User
{
public:
std::array<Account, SIZE> getListAccount()
{
return listAccount;
}
private:
std::array<Account, SIZE> listAccount
}
Class Account
{
public:
void setUserName(std::string newUSN)
{
userName=newUSN;
}
private:
string userName;
string password;
}
int main()
{
User xxx(.......);
xxx.getListAccount()[1].setUserName("abc"); // It doesn't effect
return 0;
}
のようないくつかのコードを持っていないのはなぜ主な変更でsetUserName()
関数呼び出し私のxxx
ユーザーで名前は?ところで
:
- 私は私の実際のコードでは、バイナリファイル
- にデータを保存したいので、私は
std::array
を使用しています、私のユーザーのchar []、文字列ではありません
getterは配列のコピーを返します。したがって、名前はコピーで変更され、オリジナルでは変更されません。 –
具体的な質問をする必要があります。処方から、あなたが本当に望むものが明確でないことがあります。ほとんどの場合、配列または配列への参照を返す必要はありません。 – bobah
無効なC++コードをペーストした: 'class'はすべて小文字でなければならず、' std :: array 'で使用する前に' class Account'を定義する必要があります。 - [mcve]を提供する方法をお読みください!また、名前の汚染を少なくするために、 '#define'を使わないでください。代わりに 'static const size_t SIZE = 10;'または 'enum {SIZE = 10};を宣言してください(両方とも使用したいクラス内で行うこともできます)。 –
chtz