Passing Char* into custom library

Hello, I was hoping someone could give me some help in regard to the program I am writing. I am getting the following errors:
\arduino-1.0\libraries\menu\menu.cpp: In constructor 'menu::menu(char**)':
\menu.cpp:11: error: incompatible types in assignment of 'char**' to 'String [0]' (This is not showing up properly in the post it should be' Square bracket 0 square bracket')

I am creating a library to manage all the menu lists for a 2 line LCD screen and want to pass it an array of strings which it can send back to the program the stings in focus depending on the screen pointer. I will eventually have many menus so hence the need for a class/library.

My arduino code is as follows:

#include <Wire.h>
#include <menu.h>
#include "LiquidCrystal_I2C.h"

LiquidCrystal_I2C lcd(0x27,16,2);
char* mainMenuItems[] = {"Menu Item 1","Menu Item 2","Menu Item 3","Menu Item 4"};
String topLine = "TopLine";
String botLine = "BotLIne";
menu mainMenuInst(mainMenuItems);

void setup()
{
  lcd.init();
  lcd.backlight();
}

void loop()
{
  topLine = mainMenuInst.lcdDisplay(false);
  botLine = mainMenuInst.lcdDisplay(true);
  //This be the print function
  lcd.clear();
  lcd.print (topLine);
  lcd.setCursor(0, 1);
  lcd.print (botLine);
  delay(250);
}

Then I have my header file for my '"menu" library, menu.h

/*
  menu.h - Library for handling LCD menus
  Created by Colin Wildsmith, March, 2012.
*/

#ifndef menu_h
#define menu_h
#include "Arduino.h"

class menu
{
  public:
    menu(char* MenuItems[]);
    String lcdDisplay(boolean lineCursor);
  private:
    String _MenuItems[];	
};

#endif

And finally the crux of my library obviously in its beginning stages, menu.cpp

/*
  menu.cpp - Library for handling LCD menus
  Created by Colin Wildsmith, March, 2012.
*/

#include "Arduino.h"
#include "menu.h"

menu::menu(char* MenuItems[])
{
  _MenuItems = MenuItems;
}

String menu::lcdDisplay(boolean lineCursor)
{
	if lineCursor = true {
		return _MenuItems[0];
		}
	else {
		return __MenuItems[1];
		}
}

Thanks in advance
Typoon

What is it about that message that you don't understand? It seems perfectly clear to me. The char type, the char pointer type, the char array type, and the String class are all different types. You can not assign an array of char pointers (MenuItems) to an array of String objects (_MenuItems).

Thankyou, I appreciate your response. It is quite clear now you point that issue out eg char* (MenuItems) to String (_MenuItems).

However, I made the following changes and am still getting problems.

/*
  menu.h - Library for handling LCD menus
  Created by Colin, March, 2012.
*/

#ifndef menu_h
#define menu_h
#include "Arduino.h"

class menu
{
  public:
    menu(char* MenuItems[]);
    String lcdDisplay(boolean lineCursor);
  private:
    char* _MenuItems;	
};

#endif

The error is
\menu.cpp: In constructor 'menu::menu(char**)':
\menu.cpp:11: error: cannot convert 'char**' to 'char*' in assignment

I have not changed the menu.cpp menu so it is the same as the previous post.
What is a char** ?
How do I pass an array of strings?

How do I pass an array of strings?

You are passing the array just find. It is the assignment that fails.

    char* _MenuItems;

_MenuItems is a pointer to a char (or the first in an array of chars).

char **twoStars;

twoStars is a pointer to an array of pointers. That is what MenuItems[] is.

Well I finally got it to work and thought id update this post to make it complete, just in case there is someone else out there that is confused about the pointer to array of pointer concept. So here is my code.

Thanks for you help PaulS

/*
  menu.h - Library for handling LCD menus
  Created by Colin Wildsmith, March, 2012.
*/

#ifndef menu_h
#define menu_h
#include "Arduino.h"

class menu
{
  public:
    menu(char** MenuItems);
    String lcdDisplay(boolean lineCursor);
  private:
    char** _MenuItems;	
};

#endif
/*
  menu.h - Library for handling LCD menus
  Created by Colin Wildsmith, March, 2012.
*/

#include "Arduino.h"
#include "menu.h"

menu::menu(char** MenuItems)
{
  _MenuItems = MenuItems;
}

String menu::lcdDisplay(boolean lineCursor)
{
	if (lineCursor == true) {
		return _MenuItems[0];
		}
	else {
		return _MenuItems[1];
		}
}