Невозможно преобразовать из const char [] в std: string * - PullRequest
0 голосов
/ 07 февраля 2012

В файле проекта Visual C ++ Cli я создал следующий класс (тип C ++). не удалось определить тип строки или символа, подходящий для имени переменной.

#include <vector>
#include <string.h>
using namespace std ;

class MyClass 
{
public :
int x;
int y;
string * name;

void foo() { name = "S.O.S" ;}
};

P.s. тип кастинга ошибка

Ответы [ 2 ]

6 голосов
/ 07 февраля 2012

Вам необходимо внести следующие изменения:

#include <string> // not <string.h>

class MyClass
{
public:
    int x;
    int y;
    string name; // not string*
};

РЕДАКТИРОВАТЬ:

Чтобы адресовать комментарии по eliz , небольшой пример:

#include <iostream>
#include <string>

using namespace std;

class MyClass
{
public:
    int x;
    int y;
    string name;

    string foo()
    {
        name = "OK";
        return name;
    }
};

int main()
{
    MyClass m;

    // Will print "OK" to standard output.
    std::cout << "m.foo()=" << m.foo() << "\n";

    // Will print "1" to standard output as strings match.
    std::cout << ("OK" == m.foo()) << "\n";

    return 0;
}
2 голосов
/ 07 февраля 2012

Если name имеет тип string *, то вы должны вызвать один из конструкторов строк.

name = new string("S.O.S");

И не забудьте освободить строку в деструкторе (~ MyClass ()!)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...