I'm trying to use cstring. I have both
#include <cstring>
#include <string>
in my class in progress.
When I try to compile, GNU gives messages that what I believe are the functions of the class have not been declared. For example, "error: '::memchr' has not been declared
What should I do to use this file properly?
Edit: Adding/explaining my code
The project is to make a String class to provide functions such as addition and comparison to strings (though the regular string class is also required). I suspect the problem has to do with a collision between my String class and the library string class, so I'm looking at changing the #ifndef and #define lines.
String.h Code:
#ifndef STRING_H
#define STRING_H
//#ifndef MYSTRING_H //experiment
//#define STRING_H //experiment
#include <string>
#include <iostream>
using namespace std;
class String
{
public:
String();
//String(const char*);
String(char const*); //
String(char);
String(int);
String(const String&);
String(char, int);
void print();
int getLength();
String substr(int, int);
//overloads
String& operator=(const String&);
String& operator=(const char*);
friend String operator+(const String&, const String&);
friend String operator+(const String&, const char*);
friend String operator+(const char*, const String&);
friend String operator+(const String&, char);
friend String operator+(char, const String&);
String operator+=(const String&);
String operator+() const;
friend int operator==(const String&, const String&);
friend int operator!=(const String&, const String&);
friend int operator< (const String&, const String&);
friend int operator<=(const String&, const String&);
friend int operator> (const String&, const String&);
friend int operator>=(const String&, const String&);
char& operator[](int);
friend char* operator+(const String&, int);
friend char* operator+(int, const String&);
String& operator++(); //prefix
String& operator--(); //prefix
String operator++(int); //postfix
String operator--(int); //postfix
friend ostream& operator<<(ostream&, const String&);
//virtual ~String();
protected:
private:
int length;
char* buf;
};
#endif // STRING_H
String.cpp Code:
#include <cstring>
#include <iostream>
#include "String.h"
#include <string>
using namespace std;
String::String()
{
//ctor
//cout <<"default ctor called" << endl;
}
String::String(char const*)
{
}
String::String(char)
{
}
String::String(int)
{
}
String::String(String const&)
{
}
String::String(char, int)
{
}
void String::print()
{
cout << "printing something " << endl;
}
String String::substr(int, int)
{
}
int String::getLength()
{
string h = "hi";
//std::strlen(h);
return length;
}
String& String::operator=(const String&)
{
}
String& String::operator=(const char*)
{
}
String operator+(const char*, const String&)
{
}
String operator+(const String&, const char*)
{
}
String operator+(const String&, const String&)
{
}
String operator+(const String&, char)
{
}
String operator+(char, const String&)
{
}
String String::operator+=(const String&)
{
}
String String::operator+() const
{
}
int operator!=(const String&, const String&)
{
}
int operator==(const String&, const String&)
{
}
int operator< (const String&, const String&)
{
}
int operator<=(const String&, const String&)
{
}
int operator> (const String&, const String&)
{
}
int operator>=(const String&, const String&)
{
}
char& String::operator[](int)
{
}
char* operator+(const String&, int)
{
}
char* operator+(int, const String&)
{
}
String& String::operator++()
{
}
String& String::operator--()
{
}
String String::operator++(int)
{
}
String String::operator--(int)
{
}
ostream& operator<<(ostream&, const String&)
{
}
//String::~String()
//{
// //dtor
//}