Ошибки C2227 и C3867 в визуальной c ++ Windows Form - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь прочитать файл в своем приложении, и у меня появляется несколько ошибок, которые я до конца не понимаю.

C2227: слева от '-> Равные' должно указывать на класс / структуру / объединение / универсальный тип C3867: 'System :: String: ToString': нестандартный синтаксис;используйте '&', чтобы создать указатель на член

Вот код:

private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    OpenFileDialog^ open = gcnew OpenFileDialog();

    open->InitialDirectory = "c:\\";
    open->Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
    open->FilterIndex = 2;
    open->RestoreDirectory = true;

    if (open->ShowDialog->Equals(System::Windows::Forms::DialogResult::OK) )
    {
        textBox1->Text = open->FileName;
    }
}
private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) {
    ifstream inFile;

    string time;
    string name;
    Shack shackPref;
    pair<int, int> av;
    string filename = textBox1->Text->ToString;

    inFile.open(filename);

    if (inFile.is_open()) {
        cout << "File has been opened" << endl;
    }
    else {
        cout << "NO FILE OPENED" << endl;
    }

    while (!inFile.eof()) {

    }

Может кто-нибудь объяснить, почему open-> ShowDialog не попадает в класс / структуру / объединение/ общий тип?Как я могу изменить это, чтобы получить правильный ввод?Нужно ли создавать структуру, которая содержит эти данные, и если да, то '-> Равные' все еще сможет сравнивать ее с DialogResult?

Тот же вопрос касается попытки преобразовать имя файла в std: stringиз строкиКогда я пытаюсь трактовать Text как элемент textBox1, он говорит, что у него нет члена.Почему '-> ToString' не распознает 'Text' как участника?

Заранее благодарю за помощь.Я все еще довольно новичок в c ++, так что это стало для меня настоящим умом.

1 Ответ

0 голосов
/ 30 мая 2018

Вы пытаетесь использовать ShowDialog как свойство или член, но это метод, поэтому его необходимо вызывать в скобках.

open->ShowDialog()

То же самое относится к ToString .Он должен быть вызван как функция.

textBox1->Text.ToString();

Но кроме того, вызывать ToString () для String не имеет смысла.Вы должны быть в состоянии использовать ответы на этот вопрос для преобразования .net String в std :: string.

C ++ .NET преобразовать System :: String в std :: string

...