1

我正在将一些 C# 代码转换为 C++。

我遇到了以下数据类型:

public interface FooBar
{
     string Name { get; }
     decimal Weight { get; }
     int AgeInYears { get; }
}

我想在我的 C++ 标头中声明这一点,但我不确定解决此问题的最佳方法是什么 - 任何建议都将不胜感激。

PS:我正在使用Qt(但对它来说是新的),所以我愿意使用Qt(Q_PROPERTY,Q_INTERFACE)等的任何功能,如果这有助于我声明一个带有(只读)属性的接口。

4

3 回答 3

3
class FooBar {
public:
    QString  getName() = 0;
    double   getWeight() = 0;
    int      getAgeInYears() = 0;
};

不要忘记将其作为 public: 继承NewClass : public FooBar { ... };

您绝对必须自己声明它,因为Q_INTERFACEQ_PROPERTY用于修饰此类声明并通知 Qt 它们可能会以古怪的 Qt 方式使用。

于 2012-12-26T14:31:54.647 回答
2

像这样的东西可以解决问题:

类 FooBar
{
上市:
    std::string GetName(){ return _name; }
私人的:
    std::string _name;
}
于 2012-12-26T14:35:53.727 回答
1

你不能在 C++ 中做到这一点。唯一的可能是将属性设为私有并写入访问器。没有语法糖可以为你做这件事。但是,某些 IDE 可能会生成代码。

于 2012-12-26T14:23:11.937 回答