C++ では、C# などの言語では or の代わりに or を使用して、オブジェクトの値にアクセスすること->
を知っています。お役に立てれば幸いです。ありがとう :)::
.
button->Text
System::String^
->
::
5 に答える
->
ポインター変数のメンバーにアクセスしているときです。EG: へのポインターをmyclass *m = new myclass(); m->myfunc();
呼び出します。スコープ演算子です。これは、何かがどのスコープにあるかを示すためです。名前空間にある場合は、次のように記述しますmyfunc()
myclass
::
myclass
foo
foo::myclass mc;
->
オブジェクトへのポインターがある場合、これはそのポインターを逆参照してその属性にアクセスするためのショートカットです。pointerToObject->member
と同じです(*pointerToObject).member
::
あるスコープからのものにアクセスするためのものです - 名前空間とクラス/構造体スコープでのみ機能します。namespace MyNamespace { typedef int MyInt; } MyNamespace::MyInt variable;
あなたの質問の状態に反して、C++で使用します。.
かなり。
.
(メンバーとメソッドにアクセスするために非ポインタと共に使用)
std::string hello = "Hello";
if (hello.length() > 3) { ... }
->
(メンバーとメソッドにアクセスするためのポインタと共に使用)
MyClass *myObject = new MyClass;
if (myObject->property)
myObject->method();
::
(スコープ解像度)
void MyClass::method() { ... } //Define method outside of class body
MyClass::static_property; //access static properties / methods
::
は名前空間の解決にも使用されます (最初の例を参照してください。は名前空間にありますstd::string
) 。string
std
::
、 、.
の使用例をいくつか示してみ->
ます。私はそれが役立つことを願っています:
int g;
namespace test
{
struct Test
{
int x;
static void func();
};
void Test:: func() {
int g = ::g;
}
}
int main() {
test::Test v;
test::Test *p = &v;
v.x = 1;
v.func();
p->x = 2;
p->func();
test::Test::func();
}