1) The class interfaces do not follow good object-oriented design
principles, which make them bug-prone and hard to extend/subclass properly.
Improve the object-oriented design of the classes.
2) The class interfaces are almost completely undocumented. Include proper
interface documentation in the .h-file.
3) There seems to be a bug somewhere, as the test program seems to end with
a SEGV. Find the bug, explain what is wrong, and make a working fix.
4) The class LogicalFunction only supports functions defined by a table.
For some logical functions, especially with many inputs, the truth tables
may be inconveniently large. As an example, a 10-input XOR would need 1024
rows, whereas you could implement it by a couple of lines of C++ code.
Make modifications that makes it possible for the calling program to define
the behavior of a LogicalFunction by providing C++ code.
5) Using your modified classes, define LogicalProcessors that are able to inspect an 8x8 monochrome pixel grid, represented by 64 inputs, and report whether this grid has horizontal, vertical or rotational symmetry. Verify LogicalProcessors by using the grids given in testcases.h as input