我刚刚了解了typedef。假设我有一个实例:
private:
typedef std::string int doubles abc;
当我为实例abc创建一个访问器时:
returnType get(){...}
我应该在returnType中添加什么?它是abc还是数据类型? THX
答案 0 :(得分:2)
我不确定你在这里想做什么。您的typedef
语法无效,"加倍"不是C ++类型(但可能只是一个错字)。有效语法的示例如下:
typedef std::string abc;
typedef int foo;
...
然后,您可以在函数签名中使用typedef
,就像其他类型一样:
abc getValue();
如果您想在公共成员函数中使用typedef
,请将public
放在班级的typedef
部分。您应该知道,除了typedef
之外,您班级之外的代码始终必须在class SomeClass {
public:
typedef std::string foo;
};
// Somewhere outside SomeClass
SomeClass::foo bar = ...
typedef SomeClass::foo localFoo;
localFoo fooBar = ...;
前加上您的班级名称。
typedef
除此之外:union
没有提供任何方法让变量代表多种类型。 C ++是一种静态类型语言,因此这不是直接可行的。但是你可以:
void*
和一些鉴别器来存储当前存储的类型boost::variant
并投射 - 不推荐! boost::any
,{{1}}之类的内容,如其他人建议编辑:最后,您使用术语"实例":它通常用于引用类的实例,即属于类的特定对象。你的意思是"成员变量"。