Учу С++. Дошел до классов. Не получается запустить код: выбивает ошибки 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;
}
У вас в 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;
}
char* name;
const char* name;
Ну или разбирайся с выделением памяти и strcpy.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей