Как сделать массив классов из списка строк в C ++, вопрос для начинающих! - PullRequest
0 голосов
/ 11 декабря 2010

Я хочу иметь массив объектов SerialPort для каждого порта в системе.Моя идея состояла в том, чтобы сделать это таким образом:

    public ref class CommunicatorClass
{
private:
    static array<SerialPort^>^ _serialPortList;

public: 
    static void Main(){
//          _serialPortList->Initialize;
        for each (String^ s in SerialPort::GetPortNames())
        {
            Console::WriteLine("   {0}", s);
            AddListItem(s);

        }
    }

     static void AddListItem(String^ s)
    {
        // Get the length
        _serialPortList->Length = _serialPortList->GetLength + 1;

        _serialPortList[_serialPortList->GetLength] = gcnew SerialPort(s, 9600);
    }
};

, но я совершенно новичок в C ++ / Windows-программировании.Так что, да, конечно, есть много ошибок. Может кто-нибудь, пожалуйста, исправьте это (если сама идея не полная чушь) и скажите мне несколько слов об ошибках?.

1 Ответ

0 голосов
/ 12 декабря 2010

Вы хотите фактически открыть все последовательные порты в системе с одинаковой скоростью передачи данных?

Вы не можете изменить длину массива, вам нужно создать совершенно новый и скопироватьпо всем данным, и это неэффективно делать это каждый раз, когда вам нужно добавить еще один элемент.Вместо этого я предлагаю использовать System::Collections::Generic::List, который позаботится обо всех динамических изменениях размера для вас.

C ++ / CLI может напрямую вызывать функции собственного последовательного порта Windows, и я предлагаю вам сделать это, потому что .NET *Класс 1006 * - это кусок полного мусора, который вынуждает вас к стилю программирования, который не вызывает никаких проблем.Конечно, вы захотите скрыть интерфейс Windows за собственным классом-оболочкой, но это того стоит.

...