具有reference type成员的类如何使用默认的构造函数?


场景:某类中有若干成员变量是引用类型, 也就是说构造函数一定要将其初始化, 但是需要写单元测试测试类中某成员函数,且这个成员函数只是逻辑处理,并不依赖引用的变量,所以想构造一个空的参数空实现等价于默认的构造函数.

但是编译器会给出warning或者error. 有没有什么方式可以声明这种构造函数.

或者, 没有其他的解决方案可以绕过构造类的无关入参而生成类对象?

warning: default-initialization of '', which has reference type

相关问题: 如何将googletest嵌入到工程中写测试用例? , 问题中的处理方式可以通过构造空入参构造函数解决类对象实例生成,不过要求成员变量无引用类型的.

单元测试 C++

蛋蛋的哀愁 10 years, 3 months ago

没想到特别优雅的办法:
被采纳的办法感觉也不是很妥当。
我暂时能想到的对该变量用一个 #ifdef XXXX 的宏包装起来。然后这个 XXXX 在测试代码里面定义。
这样在测试的过程中完全无视这些引用变量。
这样应该更安全一些。

喵Meo.w answered 10 years, 3 months ago


 class C {
    // ...
    T& t{*(T*)(nullptr)};
    // ...
};

肉嘎嘎思密达 answered 10 years, 3 months ago

Your Answer