我正在尝试找出c++程序的最佳方法:
我需要创建一个名为Characteristic的对象。这家伙有4个属性:
描述性-选项)
value
如果我使用的是Java,我会创建一个具有两个子对象的对象类型:数字和描述性。每个都有适当的范围,并以适当的格式存储值。
两种情况的示例:
名称: Warmeness
类型:数字
范围:最小1最大5
值:2
名称:样式
类型:描述性
范围:极简主义摄影
价值观:极简主义
我不知道在c++中做这件事最好的方法是什么。
我应该看模板吗?因为如果是这样的话,我不知道如何使用它们。
发布于 2012-04-19 04:11:02
如果你愿意,你可以做和Java一样的事情。
struct Type {
std::string Name;
};
struct Numeric : Type {
int value, min, max;
};
struct Descriptive : Type {
std::string value, min, max;
};然而,在你决定如何实现你的特性之前,你必须更好地定义你将如何使用它以及你想要的接口。例如,上面的代码并不容易将Type对象用作多态对象。您必须手动检查类型指针是否指向数值或描述性类型,并相应地执行操作。
获得多态性的一种方法是使用C++:
struct Type {
~Type() {} // virtual destructor
virtual void do_something() = 0; // pure virtual function. Derived classes must provide an implementation
std::string Name;
};
struct Numeric : Type {
virtual void do_something() {
std::cout << "Numeric value: " << value << " (" << min << ',' << max << ")\n";
}
int value, min, max;
};
struct Descriptive : Type {
virtual void do_something() {
std::cout << "Descriptive value: " << value << " (" << min << ',' << max << ")\n";
}
std::string value, min, max;
};现在,当您在Type *上调用do_something时,它将为动态类型找出正确的方法并调用该方法。
发布于 2012-04-19 04:04:03
在C++中有几种方法可供选择:
如果没有进一步的细节,就不可能给出很好的理由来说明为什么你应该更喜欢其中一个。
https://stackoverflow.com/questions/10217025
复制相似问题