做这个 - >更短,节省一些时间打字

时间:2014-10-23 05:52:17

标签: c++ c-preprocessor

这个想法很简单,使用@classVar而不是this-> classVar。由CoffeeScript启发,因为显式访问实例变量是一种很好的做法。

我想这样做

#define @ this-> 

后来这个

class MyClass{
  int foo;

  void bar(){
     @foo = 10;
  }
} 

但是GCC说@不是标识符,不会编译它。 据我所知,@符号不是C ++标准的一部分应该是免费提供的。

还有哪些其他解决方案可以缩短 this->

3 个答案:

答案 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;