Это не имеет ничего общего с шаблонами.Это о классах и объектах.Адрес width
определяется объектом, частью которого он является;без объекта нет ширины.
Однако без объекта вы можете создать указатель на член;это не обычный указатель (если бы он был, он назывался бы «указатель»).Например:
class A {
public:
int width;
};
int A::*w = &A::width;
Вы используете его для доступа к этой переменной при создании объекта:
A a;
a.*w = 3;
A aa;
aa.*w = 4;
Если вам действительно нужно только одно значение width
для каждый объект вашего типа, да, вы можете сделать его static
членом:
class A {
public:
static int width;
};
int A::width;
Теперь вы можете создать указатель на этот член как обычный указатель:
int* w = &A::width;
и вы можете использовать w
в качестве обычного указателя:
*w = 3;