当涉及到"问题线"的"隐藏特征"时,没有C++的爱吗?想我会把它扔出去.C++的一些隐藏功能是什么?
如何在C++中对受保护的方法进行单元测试?
在Java中,我要么在与测试类相同的包中创建测试类,要么创建一个匿名子类,在我的测试类中公开我需要的方法,但这些方法在C++中都不可用.
我正在使用NUnit测试一个非托管的C++类.
下面简单的一段代码,用VC2008编译但g ++拒绝代码:
#include <iostream>
class myclass
{
protected:
void print() { std::cout << "myclass::print();"; }
};
struct access : private myclass
{
static void access_print(myclass& object)
{
// g++ and Comeau reject this line but not VC++
void (myclass::*function) () = &myclass::print;
(object.*function)();
}
};
int main()
{
myclass object;
access::access_print(object);
}
Run Code Online (Sandbox Code Playgroud)
(/W4) 在VC中打开,但它没有给出任何警告.
g ++ 4.4.1给出了一个错误:
correct.cpp: In static member function ‘static void access::access_print(myclass&)’:
correct.cpp:6: error: ‘void myclass::print()’ is protected
Run Code Online (Sandbox Code Playgroud)
如果g ++是正确的,我如何访问类的受保护成员?有另一种方式吗?
@Suroot你是说我不应该传递类型的对象myclass?实际上并不重要,g ++给出了相同的错误,但VC编译代码时没有任何警告.
#include <iostream>
class …Run Code Online (Sandbox Code Playgroud)