-1

Учу С++. Дошел до классов. Не получается запустить код: выбивает ошибки C2440 и E0513. Проблему выдает в строке 16 Test::Test() {age = 0; name="";} Если необходимо, то вот целый код:

#include <iostream>
#include <cstdlib>
using namespace std;

class Test { private: int age; char* name; public: Test(); void printDATA(); void inputDATA(); };

Test::Test() {age = 0; name="";}

void Test::printDATA() { cout << "Age: " << age << " Name: " << name; }

void Test::inputDATA() { cout << "Input ur age: " << endl; cin >> age; cout << "Input ur name: " << endl; cin.getline(name, 256, ';'); }

int main() { setlocale (LC_ALL, "rus"); Test T; cout << "Тестовая программа" << endl; T.inputDATA(); T.printDATA(); system("pause"); return 0; }

Cixo
  • 41
  • 4

2 Answers2

2

У вас в name тип char*, а литералы строк это const char*.


Для строк лучше используйте тип string.

Я подправил в двух местах код, чтобы с string работало.

Попробуйте:

#include <iostream>
#include <cstdlib>
using namespace std;

class Test { private: int age; string name; // ^^^^^^^ public: Test(); void printDATA(); void inputDATA(); };

Test::Test() {age = 0; name="";}

void Test::printDATA() { cout << "Age: " << age << " Name: " << name; }

void Test::inputDATA() { cout << "Input ur age: " << endl; cin >> age; cout << "Input ur name: " << endl; getline(std::cin, name, ';'); // ^^^^^^^ // cin >> name; }

int main() { setlocale (LC_ALL, "rus"); Test T; cout << "Тестовая программа" << endl; T.inputDATA(); T.printDATA(); system("pause"); return 0; }

gil9red
  • 77,085
1
char* name;
const char* name;

Ну или разбирайся с выделением памяти и strcpy.

Qwertiy
  • 123,725