我无法访问变量宽度。
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 但效果不佳。
最佳答案
这与模板无关。它是关于类和对象的。 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;
关于c++ - 使用命名空间和模板类访问变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54025850/