Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 对象调试。一类字符数组_C++_Arrays_Char - Fatal编程技术网

C++ 对象调试。一类字符数组

C++ 对象调试。一类字符数组,c++,arrays,char,C++,Arrays,Char,我讨厌像这样给出我的代码,但是我的UserName类出现了一些错误 错误代码如下: 232 prototype for `void UserName::setFirstName(char*)' does not match any in class `UserName' 23 void UserName::setFirstName(char) In member function `void UserName::setFirstName(char*)':

我讨厌像这样给出我的代码,但是我的UserName类出现了一些错误

错误代码如下:

    232 prototype for `void UserName::setFirstName(char*)' does not match any in class `UserName'

    23 void UserName::setFirstName(char) 

    In member function `void UserName::setFirstName(char*)': 

    233 invalid conversion from `char*' to `char' 

    233 At global scope: 

    235 prototype for `void UserName::setLastName(char*)' does not match any in class `UserName
24 void UserName::setLastName(char) 
[Build Error]  [journey.o] Error 1  
我已经尝试了很多不同的方法,这是我现在最后的安息之地。任何见解或建设性的批评都将不胜感激

#include <iostream>
#include "journey.h"
using namespace std;

char   firstName[26],
       lastName[31],
       fullName[57];
string confer; //name change confirm
char   nameChoice;
int    menuChoice,
       defLife;
bool   defNumORchar;
const int null = 0;

class UserName
{
      private:
              char firstName[26],
                   lastName[31],
                   fullName[57];

      public:             
             void setFirstName(char);
             void setLastName(char);
             char getName();
};

void journey(int life, bool numORchar)
{

    numcharChange(numORchar);
    clear();

    UserName user1; //defining user(s)

    cout << "What is your first name young coder?\n";
    cin >> firstName;
    cout << "What is your last name, " << firstName << "?\n";   
    cin >> lastName;
    defLife = life; //sets default (admin setting)
    defNumORchar = numORchar; //sets default (admin setting)

    clear();

    cout << "Are you sure your name is " << firstName << ' ' << lastName << "? " << confer << endl;
    cin >> nameChoice; //confirm name 

    if (nameChoice == 'N' || nameChoice == 'n' || nameChoice == '0') //all menu pref covered
    {
        clear();

        cout << "What is your first name young coder?\n";
        cin >> firstName;
        cout << "\n\nWhat is your last name, " << firstName << "?\n";
        cin >> lastName;

        clear();
    }
    else 
    {
         clear(); 

         user1.setFirstName(firstName[26]); //sets names
         user1.setLastName(lastName[31]);

         journyMenu(life, numORchar); //calls menu function
    }
}

//MENU
void journyMenu(int life, bool numORchar)
{ 
    cout << "********************************************************************************";
    cout << "*          STARTING OUT WITH C++ : EARLY OBJECTS PERSONAL TUTOR                *";
    cout << "********************************************************************************";
    cout << " " << firstName << ", please choose from the following choices:\n";
    cout << "* 1. Main Chapter Menu                                                         *"; 
    cout << "* 2. Current life left                                                         *";
    cout << "* 3. Programming Credits                                                       *";
    cout << "* 4. Administrator Settings                                                    *";
    cout << "********************************************************************************";
    cout << endl << endl << "Choice:\n"; 
    menuComp(life, numORchar);
}

/* This function computes the choice for menu function then calls menu function again so user can make another selection */
void menuComp(int life, bool numORchar)
{           
    cin >> menuChoice;

    if (menuChoice == 1){ //Main Menu
    menu(life, numORchar); }
    else if (menuChoice == 2) //Life Left
    {
         clear();
         cout << "You currently have " << life << " lives left. Once lives reach \"0\", program restarts. \n\n Please make another choice:\n\n";
         journyMenu(life, numORchar);
    }
    else if (menuChoice == 3) //Credits
    {
         clear();
         cout << "PERSONAL TUTOR PROGRAMMING CREDITS:\n\n ~Casey Gardiner~ \n ~Doug Korody~ \n ~Jacob Armitage~ \n";  
         journyMenu(life, numORchar); 
    }
    else if (menuChoice == 4) //admin section
    {
         clear();
         admin(life, numORchar);
    }
}

int lifeBot(int life, bool numORchar)
{
       if (life > 0){
       return life; } //back to current function
       else
       //call end-of program function
       {
       char killChoice;

       clear();

       cout << "YOU HAVE REACHED \"0\" LIVES....\n\n";
       cout << "GoodBye!! Better luck next time!\n";
       cout << "Care to try again, " << firstName << "?" << confer << endl;
       cin >> killChoice;
       if (killChoice == 'Y' || killChoice == 'y' || killChoice == '1')
       {
                      life = 10;
                      clear();
                      journey(life, numORchar); 
       }
       else if (killChoice == 'N' || killChoice == 'n' || killChoice == '0'){
       exit(1); } //exit program
       }
} 

int admin(int life, bool numORchar)
{
    int input,
        adminChoice;

    char input2;

    adminMenu();
    cout << "Choice: ";
    cin >> adminChoice;

    if (adminChoice == 1)
    {
               clear();
               adminMenu();

               cout << "You currently have " << life << " lives. Please enter new value: \n\n";
               cin >> input;
               life = input;
    }
    else if (adminChoice == 2)
    {
               clear();
               adminMenu();

               cout << "Your current setting is " << confer << ". Would you like to reverse this?\n" << confer << endl << endl;
               cin >> input2;

               if (input2 == 'Y' || input2 == 'y' || input2 == '1')
               {
                    clear();

                    if (numORchar == false)
                    {
                         numORchar = true; 
                    }
                    else if (numORchar == true)
                    {
                         numORchar = false; 

                    }
               numcharChange(numORchar);      
               }    
    }
    else if (adminChoice == 3) //Save Settings
    {
         clear();
         defLife = life;
         defNumORchar = numORchar; //new default
         journyMenu(life, numORchar); //new default
    }
    else if (adminChoice == 4) //Exit w/o save
    {
         clear();
         journyMenu(defLife, defNumORchar); 
    }

    clear();
    if (life == defLife && numORchar == defNumORchar){
    journyMenu(life, numORchar); }
    else {
    admin(life, numORchar); }

}


void adminMenu()
{        
    cout << "********************************************************************************";
    cout << "*                  PERSONAL TUTOR - ADMINISTRATOR PANEL                        *";
    cout << "********************************************************************************";
    cout << "* Welcome to the Administrator Section of the program. Please choose from the  *";
    cout << "* following options:                                                           *";
    cout << "*                                                                              *";
    cout << "* 1. Change number of lives (default = 10)                                     *";
    cout << "* 2. Change default input values                                               *";
    cout << "* 3. Change current user information                                                                              *";
    cout << "*                                                                              *";
    cout << "* 4. Save                                                                      *";
    cout << "* 5. Exit without saving                                                       *";
    cout << "********************************************************************************" << endl << endl;
}

int numcharChange(bool numORchar)
{
    //Sets pref for menu options
    if (numORchar == 0){
    confer = "[Y/N]"; }
    else if (numORchar == 1){
    confer = "[1 = YES/0 = NO]"; }

    return 0;
}     

void UserName::setFirstName(char fn[26]){
     firstName[26] = fn; }

void UserName::setLastName(char ln[31]){
     lastName[31] = ln[31]; }

char UserName::getName()
{
     fullName[57] = firstName[26] + lastName[31]; 
     return fullName[57];
}
你的问题是:

void UserName::setFirstName(char fn[26]){
     firstName[26] = fn; 
}

C++中的数组不能被赋值,需要使用Struc::/P>

void UserName::setFirstName(char fn[]){
     strcpy( firstName, fn ); 
}
更好的是,用std::string替换所有数组

编辑:在类定义中:

void setFirstName(char);
应该是:

void setFirstName(char[] );

我的意思是在最后把它们加在一起,而不是打印fn+ln@Casey抱歉-我不明白。我会完全使用strcpy,但我正在尝试合并许多不同的方法,所以我不想使用它来组合两个stringsprotype for void UserName::setFirstNamechar*'与任何类内UserName'void不匹配用户名::setFirstNamechar@Casey你是否也不愿意使用+来添加两个整数?如果你对C++学习很认真,使用STD::String来表示字符串,而不是char *。string有一个方便的赋值运算符,可以省去strcpy的麻烦。你能给我举个例子吗?