Как преобразовать 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