【发布时间】:2013-02-01 14:18:44
【问题描述】:
我正在尝试编写单元测试,其中我们将构造函数调用为以下形式的通用类:
void testConstructor() {
int argc = 2;
ACE_TCHAR* argv[] = {"Input1", "Input2"};
MyClass *myClass = new MyClass(argc, argv);
/**processing**/
}
认为ACE_TCHAR* 与char* 相同。上面的代码导致
warning: deprecated conversion from string constant to ‘ACE_TCHAR*’
我也试过了:
void testConstructor() {
int argc = 2;
ACE_TCHAR* argv[2];
argv[0] = "Input1";
argv[1] = "Input2";
MyClass *myClass = new MyClass(argc, argv);
/**processing**/
}
这会导致同样的错误。
我在某处网上读到,这可以通过使用来缓解
const ACE_TCHAR* argv[] = {"Input1", "Input2"};
但是由于函数签名,编译失败。
编辑:我不允许修改第 3 方代码,我只是为它编写单元测试。
有什么想法吗?
【问题讨论】:
-
显而易见的解决方法是让构造函数采用
const指针。 -
不要使用
class作为标识符。它是 C++ 中的保留关键字。或许使用klass -
我们不允许修改第三方提供的src。我的脑海里闪过这个想法。