Categories:
Common C++ Standard Library Compiler Errors (by Rusty C++ Coders)
The first programming assignment in the Operating Systems course can be a challenge for students that haven’t written C++ code in a while. While working with the std::queue data structure in C++, it’s easy to make certain types of mistakes (especially if C++ isn’t your native tongue):
- Not “using namespace std” when using standard library containers. This can result in some ugly error messages in Visual Studio, e.g. error/warning codes C2143, C4430, and C2238 for the class member array below (is there a better way for students/developers to find out what is happening when they make such a trivial mistake)?
- Not understanding the assignment operator semantics on a container like a queue. If we write
queue<type> myqueue = array[i];
we get a copy of the queuearray[i]
(we might have simply wanted a reference/alias). For such a mistake, the code obviously compiles but doesn’t function as intended. - Declaring a fixed-sized data structure to hold all values from a variable-sized container! Runtime errors take care of informing students about this bug (if they’re not lucky enough to have almost empty variable-size containers). The correct declaration of dynamic arrays of templated items is also not usually obvious:
T* all_elements = new T[dynamic_integer_size];
Leave a Reply