Как преобразовать C# в код виджета Qt (C++) для пространства имен и расширяет класс

Я использую Qt 5.4 для моего Android и iOS.

У меня есть код на C#, но я не знаю, как преобразовать его в Qt(C++).

В C#
A.cs

namespace WS
{
        public enum myTypes
        {
            T1,
            T2,
            T3,
        };

         public abstract class GS
        {
           protected Color _penColor = Color.White;
           protected bool ReadBaseProperty(BinaryReader reader, string readFileVersion)
            {...
            }
        }...
}

b.cs

namespace WS
{
    public class sL : GS
    {
        public virtual int PC
        {
            get { return PointList.Count; }
        }...
     }
}

В Qt я стараюсь

ах

namespace WS{
   class GS
   {
    public:
    GS();
   }
}

другой файл:

A.cpp

#include "GS.h"
WS::GS::GS(){}

другой файл:
Bh

namespace WS{
   class sL:public GS
   {
    public:
    sL();
   }
}

другой файл:
B.cpp

#include "B.h"
WS::sL::sL(){}

Это правильный формат для Qt?

1 ответ

Не совсем уверен, что вы пытаетесь сделать, но я попробую.

Нет преобразования 1-в-1 из C# в C++. Однако есть части, которые вы можете преобразовать:

A.cs

namespace WorkSystem
{
    enum myTypes
    {
        T1,
        T2,
        T3
    };

    class GS
    {
        protected:
            GS() { }
    };
}

GS имеет защищенный конструктор для предотвращения инициализации, в C++ нет такого понятия, как абстрактный

b.cs

namespace WorkSystem
{
    class sL : public GS
    {
        public:
            virtual ~sL() { }

            virtual int getPC()
            {
                return 0;
            }
    };
}

У sL есть так называемый виртуальный деструктор

Теперь для других частей:

  • Цвет: это структура System.Drawing, которая является НЕ C++, а C++ / CLI.

  • BinaryReader: этот класс доступен только в C#. Для чтения из файлов вы должны использовать stdio или стороннюю библиотеку.

  • ПК: свойства недоступны в C++, вместо этого вы используете функции как методы получения и установки.

  • PointList.Count: я предполагаю, что это класс списка C#. Опять же, они не существуют в C++, но могут быть заменены на std:: list

Другие вопросы по тегам