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
//}
 
     
     
    