您好,所以typedef对我来说是一个新主题,我已经阅读过有关它们的页面。 (http://en.cppreference.com/w/cpp/language/typedef)但这是我能找到的最好的信息,唯一的问题是因为我不知道它是如何工作的,我无法重做并使用它对于我的情况。
另外,对于抬头;我试图创建类似“应用程序”的类型。在C ++中创建CLR表单时编写的类型。 (Visual Studio)唯一的区别是它会被用于其他原因,所以请不要复制代码。
#pragma once
class Application {
public:
typedef class App; // Runnable C++ object (TEST PLEASE DON'T JUDGE)
private:
void Run(App myApp) { // ERROR: incomplete type is not allowed
}
};
感谢您的帮助!我试图让这个问题真实可以解释和光滑。
答案 0 :(得分:2)
在C ++中,typedef只是为另一种类型创建别名,因此引用新类型与引用原始类型相同。
// create a alias for the int type
typedef int my_new_type;
// here a and b have the same type
int a = 1;
my_new_type b = 1;
以上是一个人为的例子,通常你使用typedef的类型会更复杂(比如std::vector<std::pair<int, std::string>>
)。对于您的用例,我不确定您要查找的是typedef。
答案 1 :(得分:0)
我认为你正在寻找
typedef Application App;
但我不确定你为什么不做
class Application {
private:
void Run(Application myApp) {
}
};
至于用法,typedef
的一个用途是定义其底层类型可能因构建配置,目标平台和编译器而异的类型。例如,如果您正在编写将在PS4和XBOX One上运行的游戏,您可能会使用两个不同的编译器,具体取决于您正在构建的平台。
#if defined(MSVC)
typedef __int64 TInt64;
#elif defined(GCC)
typedef int64_t TInt64;
#endif
这允许您的更多代码与平台无关并抽象出编译器/平台细节,使应用程序代码更具可读性并封装我们感兴趣的假设。它还减少了代码库大小和预处理,这可以提高您的编译次。
// We can assume this will be exactly 64 bits on all our target platforms.
TInt64 myInt = 0x1000000000000000;
P.S。虽然它不能涵盖typedef
一般Marshall Cline's C++ FAQ,但对初学者和专家来说都是一个很好的资源。