如何在自己的定义中缩写类名?

时间:2018-01-04 12:02:25

标签: c++ class typedef using

如何在此类的定义中为冗长的类名创建别名?我不希望它在类定义之外可访问。我无法使用@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath*:/Project/applicationContext servlet.xml") public class AvamarControllerTest { private final static Logger LOGGER = LoggerFactory .getLogger(AvamarControllerTest.class); // REMOVED MOCK HERE private AvamarController avamar; @Mock private AvamarAllComponentsVO avamarComponent; /*@Before public void setupMock() { avamar = mock(AvamarController.class); avamarComponent = mock(AvamarAllComponentsVO.class); }*/ @Before public void setupMock() { MockitoAnnotations.initMocks(this); // INJECT MOCKED DEPENDENCES IF ANY avamar = new AvamarController(...inject mocked dependencies if any....); // DEPENDING ON WHAT YOU WANNA TEST, MOCK RETURN VALUES...One example below Mockito.when(avamarComponent. getApp_Hype_Feat_Filters(any())) .thenReturn(null); } @Test public void testGetCompGuidePage() { String productVersion ="7.5"; // THIS WILL THROW NULL EXCEPTION. NOT SURE IF ITS INTENTSIONAL Model model = null; ModelAndView modelView = new ModelAndView(); try { modelView = avamar.getCompGuidePage(productVersion , avamarComponent, model ); } catch (CustomCompGuideException e) { // TODO Auto-generated catch block e.printStackTrace(); } String abc = "new"; } } typedef

在我的案例中,它是一个类模板。

using

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

你做不到。构造函数的 id-expression ,即类定义中构造函数的名称是根据[class.ctor]p1(强调我的):

  
      
  • 在属于成员规范成员声明中,但不是朋友声明, id-expression < / em>是直接封闭类的注入类名称;
  •   

什么是注入类名?根据{{​​3}}

  

class-name 被插入到在看到 class-name 之后立即声明它的范围内。 class-name 也会插入到类本身的范围内;这被称为注入类名称。 [...]

所以inject-class-name是类本身的名称,不能是别名。

[class]p2中的这句话进一步强化了这一点:

  

class-name 不应是 typedef-name

如果您甚至不想编写构造函数,请考虑重命名该类,因为名称过于复杂。