Строка как параметр в конструкторе в C ++ - PullRequest
2 голосов
/ 17 декабря 2011
class example {
 private:
    char Name[100];        
 public:

     example(){strcpy(Name, "no_name_yet");}
     example(char n[100]){strcpy(Name, n);}


   };



int main() {
     example ex;
     char n[100];

     cout<<"Give name ";
     cin>>n;
      example();
  }

Я хочу использовать конструктор с параметром, чтобы, когда пользователь дает имя, он копировался в переменную имени. Как я могу использовать конструкцию с параметром вместо стандартного? Я пытался

  example(n)
example(char n)
  example(*n)
   example(n[100])

но никто из них не работает ...

Ответы [ 2 ]

2 голосов
/ 17 декабря 2011

Легко:

#include <string>
#include <iostream>

class example {
 private:
    std::string name;

 public:
    example() : name("no name yet"){}
    example(std::string const& n) : name(n){}
};


int main() {
     example ex;
     std::string n;

     std::cout << "Give name ";
     std::cin >> n;
     example ex(n); // you have to give your instance a name, "ex" here
                    // and actually pass the contructor parameter
}
2 голосов
/ 17 декабря 2011

Это example my_instance_of_example(n).

Однако я должен отметить, что использование массивов символов для строк - это не то, что вы делаете в C ++.Вместо этого вы должны использовать std::string, это дает вам большую гибкость.

...