【发布时间】:2014-03-26 21:39:49
【问题描述】:
我正在研究一些与数学相关的对象,我希望能够区分以数学方式表现的运算符。下面是最简单的解决方案,我希望能以某种方式完成。
struct derp { };
derp operator+(derp const & a, derp const & b) {
typedef std::true_type commutative;
typedef std::true_type associative;
return derp();
}
void test() {
typedef int testing;
}
int main(int argc, const char * argv[]) {
// is it possible to access test::testing or the typedef's in the operator+ from here?
return 0;
}
这或类似的可能吗?
【问题讨论】:
-
访问是什么意思。 typedef 实际上并不实例化变量。它几乎定义了一种数据类型,因此没有任何东西可以访问。如果你的意思是你想使用那些不同的数据类型。
-
我需要访问该类型以进行模板元编程
-
不,你不能因为
test不是一个类。尝试定义一个以test作为成员并且testing也作为成员但在test之外的类。符号test::testing也不正确(test不是一个类)。 -
我知道这是不对的,这基本上就是问题所在。我希望一些符号可以让我使用在函数中定义的 typedefs
-
作用域运算符需要命名空间或类型名作为左参数。如果您从测试函数中获取 typedef,则应该可以通过 derp::testing 调用它。否则它将是测试成员函数的本地,阻止您使用范围运算符。
标签: c++ function c++11 typedef