方法参数中的typedef

时间:2013-01-19 21:11:03

标签: c++

我刚刚了解了typedef。假设我有一个实例:

private:
  typedef std::string int doubles abc;

当我为实例abc创建一个访问器时:

returnType get(){...}

我应该在returnType中添加什么?它是abc还是数据类型? THX

1 个答案:

答案 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}}之类的内容,如其他人建议

编辑:最后,您使用术语"实例":它通常用于引用类的实例,即属于类的特定对象。你的意思是"成员变量"。