C++ では、C# などの言語では or の代わりに or を使用して、オブジェクトの値にアクセスすること->を知っています。お役に立てれば幸いです。ありがとう :)::.button->TextSystem::String^->::
5 に答える
->ポインター変数のメンバーにアクセスしているときです。EG: へのポインターをmyclass *m = new myclass(); m->myfunc();呼び出します。スコープ演算子です。これは、何かがどのスコープにあるかを示すためです。名前空間にある場合は、次のように記述しますmyfunc()myclass::myclassfoofoo::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) 。stringstd
::、 、.の使用例をいくつか示してみ->ます。私はそれが役立つことを願っています:
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();
}