【发布时间】:2018-12-27 05:24:22
【问题描述】:
我有一个结构体,它有一个 Unicode BSTR 字符串成员,看起来像这样:
struct Foo
{
wchar_t* Bar;
}
如果我现在想设置该字符串成员,我会这样做
Foo f;
f.Bar = SysAllocString(L"Hello world");
有点冗长。
有什么方法可以“重载”wchar_t 赋值运算符,以便我可以隐藏 SysAllocString 调用并可以简单地编写
Foo f;
f.Bar = L"Hello world";
重载的赋值运算符在哪里处理SysAllocString 调用?
我在想这样的事情(伪代码):
wchar_t* ???::operator=(const wchar_t* rhs)
{
return SysAllocString(rhs);
}
但我不知道该放什么来代替???,因为我没有上课。
【问题讨论】:
-
无法重载内置运算符,请改用
std::string -
@VTT 太糟糕了。考虑到我需要使用 BSTR,我会看看
std::string是否足以完成我的任务。谢谢你的评论:) -
我认为
BSTR也有一些现有的包装器 -
你可以为你的
struct Foo重载赋值运算符,所以你可以写f = L"Hello world"; -
@mch 感谢您的建议,但不幸的是,这对我不起作用。我一直在寻找一种适用于任意结构的解决方案,而不必为每个结构本身执行您提出的解决方案。
标签: c++ operator-overloading assignment-operator