2010-08-24 30 views
5

我想在我的项目类“屏幕”创建,“图形”,“字体”和“环境”,但是当我键入这些名称并回车,我得到的消息:“屏幕”被保留类名称或“环境”是保留的类名称。我不想制作CScreen或ScreenC或类似的东西:/我有Visual Stuido 2010.有什么方法可以解决这个问题吗?保留类名的Visual C++

+0

Visual Studio 8允许它,因此可能回到VC8可能是一个选项! – DumbCoder 2010-08-24 12:33:42

+6

键入您的代码而不是使用向导。或者使用同义词库。 – 2010-08-24 12:59:41

+0

你做了什么样的项目?你是如何尝试创建这些类的?这些名称在VS2010的C++实现中都没有保留。 – jalf 2010-08-24 14:12:40

回答

0

你要么需要完全不#include这些类到你的项目或做一个命名空间的类,然后当你需要解决使用该命名空间。

如果您希望其他程序员使用您的代码,他们可能会对您重复使用他们已知的类的名称感到困惑,所以最好为您的类提供一个前缀,可能表示项目名称。

9

我认为使用的命名空间就是答案。

1

你说的“我型这些名字和回车键”是什么意思?这是类向导的消息?在这种情况下,只需手动创建h和cpp文件。我不知道任何不允许将这些名称用于类的C++功能。当然,在名称冲突的情况下,使用名称空间。

0

我找到解决方法:我可以单独添加Graphics.cpp和Graphics.h,Environment.cpp和.. etc:/但我仍然不知道为什么我不能使用“添加类”:/

+0

你真的需要研究命名空间,他们是答案。 – JustBoo 2010-08-24 12:53:43

+0

为什么命名空间?看http://img814.imageshack.us/i/screenshotec.png/我不写这些文件中的任何代码。 – PiTeReK 2010-08-24 13:00:45

+0

我相信IDE本身阻止你使用这些名字。现在看起来似乎并不重要,但在“公司”项目中,文件名有一种永不“死亡”和传播的方式。你永远和他们一起生活。“我们的名字是重要的。 – JustBoo 2010-08-24 13:25:13

4

这是Visual Studio中的一个错误。微软VS 2010产品认为有很多名字是保留的,因为微软的其他产品使用该名称。然而,你显然不会被迫使用那些其他的微软产品,因为这些不是C++保留名字,这是一个错误,应该修复。只有当您包含已使用名称的内容时,才应将其报告为名称冲突。我也看到编译器在纯C++项目(不包括MFC,ATL等)上为“模块”执行此操作。

在此期间,使用添加新项选项,并手动创建标头和实现。其他人提到名称很重要,这是真的,但我不明白他们为什么会用这些名称来阻止你使用诸如屏幕,图形,字体等名称。良好的名字应该易于使用,并且这些名称是完全描述性的。绝对不要试图通过在词库中寻找不常见的单词来模糊含义。另外,不要尝试为你的类名称添加前缀 - 当你创建一个将被其他人重用的库时,命名空间是正确的工具。前缀是15年前使用的旧工具,当名称空间尚未添加到语言中时。

2

正如其他人所说,这是Visual Studio的阻止您使用的名称,没有很好的理由。

,绕过这一限制,同时仍然使用最简单的方法“添加 - >类...”对话框是

  1. 类型稍有不同的类名在“类名称:”框(说“Screen_”而不是“Screen”)
  2. 在对话框中手动编辑“.h file:”和“.cpp file:”下的文件名,使它们为Screen.h和Screen.cpp
  3. 点击“完成”创建类文件(文件名将是正确的,但实际类将是Screen_)
  4. 手动编辑它的文件中的文本,将“Screen_”更改为“Screen”