为啥 c++ 类定义中的公共引用

Posted

技术标签:

【中文标题】为啥 c++ 类定义中的公共引用【英文标题】:Why public ref in c++ class definition为什么 c++ 类定义中的公共引用 【发布时间】:2009-08-05 08:01:02 【问题描述】:

首先,我想明确一点,这对 C++ 来说是全新的,所以这可能是一个简单且有些明显的问题。在我正在阅读的名为 C++ Primer 的 C++ 书中,类是通过以下方式定义的:

class classname
public:

private:

;

但是,在 VS2008 中,编译器不喜欢这样。但是通过在课前添加公共参考,如:

public ref class classname

它在编译器中通过。谁能解释一下只用类和公共参考类定义有什么区别?我真的很感激。

【问题讨论】:

这是你想问的问题:***.com/questions/1195572/… “不喜欢这个”不是 VS2008 产生的错误消息。如果 OP 指定了错误消息,也许答案不会那么糟糕。 【参考方案1】:

ref 语法是 Microsoft 扩展,仅在托管 C++ 中使用。根据您在创建项目时错误地轻弹/clr 编译器开关的声音。如果你想做的只是创建真正的 C++ 程序,那么你会想要恢复它。

【讨论】:

在 Visual Studio 中选择错误的项目类型可能会在您不知不觉中自动打开 /clr。我想创建一个新的 dll 库并最终犯了这个错误。相反,我应该使用 Win32 控制台应用程序项目类型,这对我作为新手来说并不明显。有关详细信息,请参阅this MSDN page。 澄清...微软从 .Net 产生了两种与 C++ 交互的方法第一种(违反 ISO C++)是“托管 C++”,这已经过时了。第二个(符合 ISO 标准,即使在今天仍然有效)是 C++/CLI 这很重要,因为当使用错误的名称时,搜索结果会将读者引向 primrose 路径...【参考方案2】:

您正在阅读一本名为 C++ Primer 的书,该书教授 C++ 编程语言,而您正在尝试创建一个程序,告诉 VC++ 代码位于 C++/CLI 中,这是一种不同的编程语言....

【讨论】:

+1 使用您所学的相同语言进行编程通常会有所帮助。【参考方案3】:

您(编辑: 和其他用户)将此问题标记为:

两种编程语言C++C++/CLI, 一个由 Microsoft 提供的商业 集成开发环境 (IDE)Visual C++,可让您使用三种不同的语言(C、C++ 和 C++/CLI)进行编程)。在帖子中,您提到了 Microsoft Visual Studio 2008,它是 Visual C++ 的超集。 一个语言扩展集Managed C++,在历史上曾指代很多不同的事物,坦率地说,我现在不确定它是什么意思 :)

但是,您的首要目标应该是了解如何配置 Visual C++ 以使用您选择的语言 C++ 进行编程

像往常一样,找到这个问题的答案的一个好方法是在“”页面中输入它,然后查看建议的相关问题。这是最好的,我认为:compiling "standard" C++ in visual studio (non .net).

【讨论】:

* AProgrammer 在阅读问题后重新标记了添加 C++/CLI 的问题。 OP 对此一无所知。【参考方案4】:

您正在学习标准的 C/C++ 语言吗?如果答案是肯定的,那么该语法与 Microsoft C++/CLI 语言有关...

看:C++/CLI

尝试使用带有 C++ 扩展的 Eclipse。它提供了创建和执行标准 C++ 程序所需的一切!

Eclipse download

【讨论】:

他正在阅读 C++ 书籍,所以我推测他正在学习 C++。为什么要为 Eclipse 做广告? VC++ 是一个完善的 IDE / 编译器,可以在 Windows 上创建 C++ 程序。您只需要确保选择正确的项目类型。如果有人决定选择一个 Java 项目然后尝试编写一个 C++ 程序,那么 Eclipse 之类的问题仍然存在。 @KTC:因为 VC++ 主动将您从 ISO C++ 路径转移。 “安全”CRT,有人吗?

以上是关于为啥 c++ 类定义中的公共引用的主要内容,如果未能解决你的问题,请参考以下文章

为啥相同的语句不适用于 C++ 中的类成员?

为啥在 C++ 中的类中不需要“&”引用?

在 C++ 中的派生类之间共享公共代码

为啥在向量类中实现 operator= 时返回 const 引用

c++中重载输出流对象,为啥要返回引用

C++大纲及疑惑点三