C++ 使用命名空间和模板类访问变量
我无法访问变量宽度 A.h文件:C++ 使用命名空间和模板类访问变量,c++,namespaces,C++,Namespaces,我无法访问变量宽度 A.h文件: namespace AN{ template <typename T> class A{ public: unsigned int width; #The variable ... } } 我还尝试了一个::A::&宽度,但效果不好。这与模板无关。它是关于类和对象的。width的地址由它所属的对象确定;没有对象,就没有宽度 但是,如果没有对象,您可以创建指向成员的指针;它不是一个普通的指针(如
namespace AN{
template <typename T> class A{
public:
unsigned int width; #The variable
...
}
}
我还尝试了一个::A::&宽度,但效果不好。这与模板无关。它是关于类和对象的。
width
的地址由它所属的对象确定;没有对象,就没有宽度
但是,如果没有对象,您可以创建指向成员的指针;它不是一个普通的指针(如果是,它将被称为“指针”)。像这样:
class A {
public:
int width;
};
int A::*w = &A::width;
创建对象时,可以使用它访问该变量:
A a;
a.*w = 3;
A aa;
aa.*w = 4;
如果您确实只希望类型的每个对象都有一个width
值,则可以将其设置为静态成员:
class A {
public:
static int width;
};
int A::width;
现在,您可以将指向该成员的指针创建为普通指针:
int* w = &A::width;
*w = 3;
您可以使用w
作为普通指针:
int* w = &A::width;
*w = 3;
这与模板无关。它是关于类和对象的。width
的地址由它所属的对象确定;没有对象,就没有宽度
但是,如果没有对象,您可以创建指向成员的指针;它不是一个普通的指针(如果是,它将被称为“指针”)。像这样:
class A {
public:
int width;
};
int A::*w = &A::width;
创建对象时,可以使用它访问该变量:
A a;
a.*w = 3;
A aa;
aa.*w = 4;
如果您确实只希望类型的每个对象都有一个width
值,则可以将其设置为静态成员:
class A {
public:
static int width;
};
int A::width;
现在,您可以将指向该成员的指针创建为普通指针:
int* w = &A::width;
*w = 3;
您可以使用w
作为普通指针:
int* w = &A::width;
*w = 3;
AN::&width
毫无意义width
不是AN
的成员,而是AN::a
的成员。您需要类A
的实例,然后可以引用该实例的数据成员。width
是一个非静态成员变量。因此,您需要一个A
的实例来访问它的变量<代码>安::A;无符号int*w=&a.width代码>无符号int*w=AN::A::&width。。我试过了,但是宽度没有定义。如果我使用static,它会工作吗?@GiwrgosKostopoulos不,你需要一个a
,AN::a;无符号int*w=&a.width代码>。我认为你确实需要学习一些基本的C++概念。<代码>:& &宽度<代码>毫无意义。code>width
不是AN
的成员,而是AN::a
的成员。您需要类A
的实例,然后可以引用该实例的数据成员。width
是一个非静态成员变量。因此,您需要一个A
的实例来访问它的变量<代码>安::A;无符号int*w=&a.width代码>无符号int*w=AN::A::&width。。我试过了,但是宽度没有定义。如果我使用static,它会工作吗?@GiwrgosKostopoulos不,你需要一个a
,AN::a;无符号int*w=&a.width代码>。我认为你确实需要学习一些基本的C++概念。