#include <iostream>
using namespace std;
// Violating SRP: One class does multiple tasks (reading, logging, and processing)
class OrderProcessor {
public void processOrder() {
// Process order logic
}
public void logOrderDetails() {
// Log order details to a file
}
}
// Correct SRP: Separated into two classes, each with a single responsibility
class OrderProcessor {
public void processOrder() {
// Process order logic
}
}
class OrderLogger {
public void logOrderDetails() {
// Log order details to a file
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gVmlvbGF0aW5nIFNSUDogT25lIGNsYXNzIGRvZXMgbXVsdGlwbGUgdGFza3MgKHJlYWRpbmcsIGxvZ2dpbmcsIGFuZCBwcm9jZXNzaW5nKQpjbGFzcyBPcmRlclByb2Nlc3NvciB7CiAgICBwdWJsaWMgdm9pZCBwcm9jZXNzT3JkZXIoKSB7CiAgICAgICAgLy8gUHJvY2VzcyBvcmRlciBsb2dpYwogICAgfQogICAgCiAgICBwdWJsaWMgdm9pZCBsb2dPcmRlckRldGFpbHMoKSB7CiAgICAgICAgLy8gTG9nIG9yZGVyIGRldGFpbHMgdG8gYSBmaWxlCiAgICB9Cn0KCi8vIENvcnJlY3QgU1JQOiBTZXBhcmF0ZWQgaW50byB0d28gY2xhc3NlcywgZWFjaCB3aXRoIGEgc2luZ2xlIHJlc3BvbnNpYmlsaXR5CmNsYXNzIE9yZGVyUHJvY2Vzc29yIHsKICAgIHB1YmxpYyB2b2lkIHByb2Nlc3NPcmRlcigpIHsKICAgICAgICAvLyBQcm9jZXNzIG9yZGVyIGxvZ2ljCiAgICB9Cn0KCmNsYXNzIE9yZGVyTG9nZ2VyIHsKICAgIHB1YmxpYyB2b2lkIGxvZ09yZGVyRGV0YWlscygpIHsKICAgICAgICAvLyBMb2cgb3JkZXIgZGV0YWlscyB0byBhIGZpbGUKICAgIH0KfQo=
prog.cpp:6:11: error: expected ‘:’ before ‘void’
public void processOrder() {
^~~~~
:
prog.cpp:10:11: error: expected ‘:’ before ‘void’
public void logOrderDetails() {
^~~~~
:
prog.cpp:13:2: error: expected ‘;’ after class definition
}
^
;
prog.cpp:16:7: error: redefinition of ‘class OrderProcessor’
class OrderProcessor {
^~~~~~~~~~~~~~
prog.cpp:5:7: note: previous definition of ‘class OrderProcessor’
class OrderProcessor {
^~~~~~~~~~~~~~
prog.cpp:23:11: error: expected ‘:’ before ‘void’
public void logOrderDetails() {
^~~~~
:
prog.cpp:26:2: error: expected ‘;’ after class definition
}
^
;
prog.cpp:26:1: error: multiple types in one declaration
}
^