C++ 使用命名空间和模板类访问变量

C++ 使用命名空间和模板类访问变量,c++,namespaces,C++,Namespaces,我无法访问变量宽度 A.h文件: namespace AN{ template <typename T> class A{ public: unsigned int width; #The variable ... } } 我还尝试了一个::A::&宽度,但效果不好。这与模板无关。它是关于类和对象的。width的地址由它所属的对象确定;没有对象,就没有宽度 但是,如果没有对象,您可以创建指向成员的指针;它不是一个普通的指针(如

我无法访问变量宽度

A.h文件:

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++概念。