Hello, I am currently starting out the Data structures and Algorithms course, but I am trying to follow along with C++ in XCode. I keep getting a warning that states “11db”. I’m not exactly sure what’s wrong but i have put a note where I know the problem is occurring from which is in my insert function. Anyone have a clue on how I can fix this problem? This is what my code currently looks like:
#include “Array.hpp”
#include
using namespace std;
Array::Array(int size)
{
setSize(size);
}
int Array::getSize()
{
return size;
}
void Array::setSize(int size)
{
if(size < 1)
throw invalid_argument(“size”);
this->size = size;
}
void Array::insert(int number)
{
if(count < size)
numbers[count] = number;
// count++;
//this is where we’ve been defeated so far…
}
void Array::print()
{
for (int i = 0; i < size; i++)
cout << numbers[i] << endl;
}
There can be many possible things. Memory may not have been assigned or cleared properly.
Show your class structure. Write codes of Array.hpp
, Array.cpp
and main.cpp
inside ` `` (3 backticks, without spaces) ```
“”"
#ifndef ARRAY_ARRAY
#define ARRAY_ARRAY
class Array
{
public:
Array() = default;
Array(int size);
int getSize();
void setSize(int size);
void insert(int number);
void print();
private:
int size = 0;
int count = 0;
int numbers;
};
#endif
“”"
#include “Array.hpp”
#include
using namespace std;
Array::Array(int size)
{
setSize(size);
}
int Array::getSize()
{
return size;
}
void Array::setSize(int size)
{
if(size < 1)
throw invalid_argument(“size”);
this->size = size;
}
void Array::insert(int number)
{
if(count < size)
numbers[count] = number;
// count++;
//this is where we’ve been defeated so far…
}
void Array::print()
{
for (int i = 0; i < size; i++)
cout << numbers[i] << endl;
}
“”"
#include “Array.hpp”
int main()
{
Array numbers{6};
numbers.insert(5);
numbers.insert(6);
numbers.insert(7);
numbers.insert(8);
numbers.insert(9);
numbers.insert(10);
numbers.print();
return 0;
}
Declare numbers
as an array in Array.hpp
and remove comments from count
in Array.cpp
.
Sorry, I’m just realizing I sent the wrong code. The actual code isn’t much different but here is that code (I still haven’t figured out why I am getting the error (11db).
’
#ifndef ARRAY_ARRAY
#define ARRAY_ARRAY
class Array
{
public:
Array() = default;
Array(int size);
int getSize();
void setSize(int size);
void insert(int number);
void print();
private:
int size = 0;
int count = 0;
int numbers;
};
#endif
’
‘’
#include “Array.hpp”
#include
using namespace std;
Array::Array(int size)
{
setSize(size);
}
int Array::getSize()
{
return size;
}
void Array::setSize(int size)
{
if(size < 1)
throw invalid_argument(“size”);
this->size = size;
}
void Array::insert(int number)
{
//if (size == count)
//int largerNumbers = (size * 2);
numbers[count++] = number; // items can be incremented as so
}
void Array::print()
{
for (int i = 0; i < size; i++)
cout << numbers[i] << endl;
}
‘’
‘’’
#include “Array.hpp”
int main()
{
Array numbers{6};
numbers.insert(5);
numbers.insert(6);
numbers.insert(7);
numbers.insert(8);
numbers.insert(9);
numbers.insert(10);
numbers.print();
return 0;
}
‘’’
Also, I already have numbers declared as an array. This website just makes it look like a checkbox though. lol
It was so simple that it was missed.
Above array declaration is static. If we use a static array declaration we need to mention its size. It would be constant throughout the program. You need to use a pointer instead.
Perform following changes:
- Define
numbers
as a pointer
- Use
new
operator to set size of array (dynamic memory allocation)
- Manually free memory assigned to the pointer
- Set pointer to
nullptr
The error is not 11db it is lldb and it is not an error, it is a debugger.
P.S. - Backtick (`) is located below Escape button, above Tab button.
```
code
` ``
1 Like
Thank you so much! I went ahead and went back to the topic of pointers in the course. Thank you again for the helpful changes, this was very helpful! Appreciate it lots