我无法访问变量 width 。
A.h文件:
namespace AN{
template <typename T> class A{
public:
unsigned int width; #The variable
...
}
}
B.cpp文件:
#include "A.h"
using namespace AN;
namespace BN{
bool something(){
unsigned int * w = AN::&width;
}
}
我也尝试了AN :: A ::&width,但是效果也不好。
答案 0 :(得分:2)
这与模板无关。它是关于类和对象的。 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;