Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ cli Cpp。净额:“;a->;方法名称“;vs";a、 方法名称“;_C++ Cli - Fatal编程技术网

C++ cli Cpp。净额:“;a->;方法名称“;vs";a、 方法名称“;

C++ cli Cpp。净额:“;a->;方法名称“;vs";a、 方法名称“;,c++-cli,C++ Cli,我想知道这两者之间的区别(对不起,我不知道这个主题的名称) 我来自C#,在那里我被用来编写System.data和classA.MethodA。我已经发现,在Cpp中,我需要使用名称空间::,类成员->。但是简单的“怎么办?”? 我已经创建了System::data:odbc::odbcConnection^连接。后来我可以使用connection.Open。为什么不打开连接 对不起,我确信这是一种很容易在网上找到的东西,但我不知道这些的英文名称。 谢谢大家如果您有指向对象的指针,请使用: My

我想知道这两者之间的区别(对不起,我不知道这个主题的名称)

我来自C#,在那里我被用来编写System.data和classA.MethodA。我已经发现,在Cpp中,我需要使用名称空间::,类成员->。但是简单的“怎么办?”? 我已经创建了System::data:odbc::odbcConnection^连接。后来我可以使用connection.Open。为什么不打开连接

对不起,我确信这是一种很容易在网上找到的东西,但我不知道这些的英文名称。
谢谢大家

如果您有指向对象的指针,请使用:

MyClass *a = new MyClass();
a->MethodName();
另一方面,如果您有一个实际对象,则使用虚线表示法:

MyClass a;
a.MethodName();

简短答案:C++允许你管理自己的内存。因此,您可以通过使用指针(本质上是包含内存地址的整数变量,而不是值)来创建和操作内存。
a.Method()
表示
a
是类的实例,您可以从中调用
Method


a->Method()
意味着
a
是指向类实例的指针,您可以从中调用
Method

当您使用类似->成员的语法时,您使用的是指向结构或对象的指针。 使用.member等语法时,使用的是结构或对象,而不是指向结构或对象的指针


我为您快速搜索了一下,看起来解释得相当快和得体。

为了稍微澄清前面的答案,VC++中的插入符号^。它是一个类的“句柄”,意思稍有不同,但很相似。请参阅谷歌的简短解释:

因此,在您的示例中,如果您像这样初始化连接:

System::Data::Odbc::OdbcConnection connect;
//You should be able to do this:
connect.Open();
相反,如果您这样做:

System::Data::Odbc::OdbcConnection^ connect1 = gcnew System::Data::Odbc::OdbcConnection();
connect1.Open(); // should be an error
connect1->Open(); //correct

同样值得一提的是C++/CLI“handles”的用法,因为这个问题是专门针对这一点提出的。这里也有一个关于堆栈溢出的插入符号的很好的讨论: