两个抽象类,派生自同一个基类.如何访问从一个抽象类到另一个抽象类的指针
Two abstract classes, deriving from the same base class. How can I access a pointer from one abstract class to the other
我正在为我的 cppUnit 测试工具编写一个帮助程序类,其中包括打印带有空格的测试描述。由于测试工具连接各种元素以命名测试类,因此测试名称中的空格会导致错误。 这听起来可能微不足道,但是当您查看 60 个测试的测试输出时,这些测试都是类似名称的骆驼大小写句子运行,空格很好。
由于我不想触摸线束,因此我创建了我的帮助程序类,以便它派生自类 Test,每个单独的测试也是从 test 派生的类。 我很不擅长多态性,所以对我有耐心。 我正在尝试做的是从我的帮助程序类(成员 getName(( 访问单元测试类中的成员 getName((,该单元测试类是从 Test 基类继承的公共成员。
以下是我迄今为止所做工作的摘录。 它确实有效,但是我希望在实际调用此函数时更干净。
测试助手类
class TestHelperClass : public Test
{
public:
virtual ~TestHelperClass(){}
template <typename T>
static const char* getReadableName(T testClassPtr)
{
char * uglyName;
int ugLen;
ugLen = strlen(testClassPtr->getName().asCharString());
uglyName = (char*)malloc(ugLen);
memcpy(uglyName, testClassPtr->getName().asCharString(), ugLen);
std::string prettyName;
// Handle conversion...
free(uglyName);
return prettyName.c_str();
}
};
单元测试
仅供参考,这是一个宏,它采用两个参数一个组和一个名称,并生成一个继承 Test 类的类。
TEST(groupNameString, reallyLongTestDescriptionString)
{
printf("%sn", TestHelperClass::getReadableName(this));
// remainder of the unit test.
}
显然,我远非不完整。 我想知道的是:
有没有办法在不提供函数参数的情况下访问指向单元测试类的指针?
有没有办法不使它成为静态函数?
如果上述一项或两项的答案是否定的,有没有办法使用宏来创建更多 简单的界面为用户,编写测试?
你可以使 getReadableName 函数成为 Test 类的一部分。然后,派生类可以直接访问它。
Test(groupNameString, reallyLongTestDescriptionString)
{
printf("%sn", this->getReadableName());
// remainder of the unit test.
}
您可以使用宏中给出的名称在 Test 类中设置一个受保护的变量,该变量将在 getReadbleName 中转换。顺便说一句,您不需要模板。
相关文章:
- C++从另一个类访问公共静态向量的正确方法是什么
- 无法创建抽象类的实例
- 如何使用单独文件中的派生类访问友元函数对象
- 两个抽象类,派生自同一个基类.如何访问从一个抽象类到另一个抽象类的指针
- 在 C++ 中访问抽象类成员中的类
- 如何将抽象类的可访问性限制为另一个抽象类及其子类?
- 访问其他抽象类,而无需在C 中包含参考
- 抽象类的需求是什么?为什么要通过其基类访问派生类方法?在C++
- 从抽象基类访问另一个基类成员
- C 分开的抽象类(接口),用于某些通用读取和/或写入访问
- C++将类指针存储在可以从派生类访问的抽象基类中
- 如何在boostpython中从抽象类访问派生类对象
- 继承错误 - 无法实例化抽象类 无法访问在类中声明的受保护成员
- visual C++无法访问抽象类的向量的元素
- 抽象类成员无法访问派生类中设置的值
- 如何从抽象类的友类访问抽象类的私有成员
- 抽象类层次结构和访问冲突
- 抽象类通过模板化的虚拟函数访问实现的类型
- 使用抽象类的指针访问派生类的方法;派生类似乎也是抽象的
- C++访问抽象类指针向量的子类的成员