这个想法很简单,使用@classVar而不是this-> classVar。由CoffeeScript启发,因为显式访问实例变量是一种很好的做法。
我想这样做
#define @ this->
后来这个
class MyClass{
int foo;
void bar(){
@foo = 10;
}
}
但是GCC说@不是标识符,不会编译它。 据我所知,@符号不是C ++标准的一部分应该是免费提供的。
还有哪些其他解决方案可以缩短 this-> ?
答案 0 :(得分:2)
正如@Tom所提到的,在这种情况下你不必使用this->
。只有当类变量和函数参数名相同时(例如void bar(int foo){ this->foo=foo;}
),才必须使用它。
如果您想强调该变量是成员变量,请遵循样式指南(例如Google C++ Style Guide)并相应地命名您的成员变量。
class MyClass{
int foo_;
void bar(){
foo_ = 10;
}
}
或
class MyClass{
int mFoo;
void bar(){
mFoo = 10;
}
}
答案 1 :(得分:1)
如果您尝试检查预处理器输出cpp test.cpp > test.preprocessed
- 您会收到错误"错误:宏名称必须是标识符"。宏名称应以字母
答案 2 :(得分:0)
您可以将this
关键字替换为更短的内容:
#define T this
然后像这样访问它:
T->foo = 10;