我想提高我對C++語言的知識,並製作一堆棧。下面是我的問題的一個非常簡短的例子:爲什麼我必須直接訪問結構的成員才能更改它們,而不是使用函數來實現呢?如果有人知道爲什麼會發生這樣的答案,非常感謝!由於C++結構行爲
#include <iostream>
#include <vector>
using namespace std;
struct Stack {
int N;
vector<int> stack;
int len() { return stack.size(); }
void add(int N) { stack.push_back(N); }
};
struct Stacks {
vector<Stack> stacks;
Stack getStackAtIndex(int i) { return stacks[i]; }
void addStack(Stack stack) { stacks.push_back(stack); }
void printStacks() {
cout << "Printing stacks" << endl;
for (int i = 0; i < stacks.size(); i++) {
cout << "Stack #" << i << ": ";
for (int j = 0; j < stacks[i].len(); j++) {
cout << stacks[i].stack[j];
if (j != stacks[i].len()-1) cout << " -> ";
}
cout << endl;
}
}
};
int main() {
Stacks stacks;
Stack stack;
stack.add(1);
stacks.addStack(stack);
// This does not work:
// stacks.getStackAtIndex(0).add(2);
// This works:
stacks.stacks[0].stack.push_back(2);
stacks.printStacks();
return 0;
}
也許有getStackAtIndex返回一個引用? – Max
[可能的重複[什麼意思是返回一個引用?](https://stackoverflow.com/questions/13718465/what-does-it-mean-to-return-a- reference) – AndyG