#include <iostream>
#include <string>
// Forward declaration
class SPIBus;
class DisplayDriver {
public:
// TODO: Implement fastWrite
// It takes SPIBus& bus, int v1, int v2
// It writes v1 to bus.buffer[0] and v2 to bus.buffer[1]
void fastWrite(SPIBus& bus, int v1, int v2);
};
class SPIBus {
private:
int buffer[2];
// TODO: Declare DisplayDriver as a friend class
friend DisplayDriver;
public:
SPIBus() {
buffer[0] = 0;
buffer[1] = 0;
}
void dump() {
std::cout << "Buffer: [ " << buffer[0] << " " << buffer[1] << " ]" << std::endl;
}
};
// Implementation of fastWrite (defined after SPIBus so it sees the 'buffer' member)
void DisplayDriver::fastWrite(SPIBus& bus, int v1, int v2) {
// TODO: Write to private member 'buffer'
bus.buffer[0] = v1;
bus.buffer[1] = v2;
}
int main() {
SPIBus bus;
DisplayDriver driver;
int N;
if (!(std::cin >> N)) return 0;
for (int i = 0; i < N; ++i) {
std::string cmd;
std::cin >> cmd;
if (cmd == "WRITE") {
int v1, v2;
std::cin >> v1 >> v2;
driver.fastWrite(bus, v1, v2);
} else if (cmd == "SHOW") {
bus.dump();
}
}
return 0;
}Input
3 SHOW WRITE 55 99 SHOW
Expected Output
Buffer: [ 0 0 ] Buffer: [ 55 99 ]