如何为包含另一个 class 实例的数组创建 const getter?
How to make a const getter for an array which contains another class's instances?
问题是 getter 必须处理 const
bar
对象。但是编译器说:
[Error] invalid conversion from 'const foo*' to 'foo*' [-fpermissive]
代码:
class foo
{
private:
string name;
public:
foo()
{
name = "default";
}
};
class bar
{
private:
foo array_of_foo[43];
public:
foo* get_array_of_foo() const { return array_of_foo; }
};
您 实际上 需要从常量 bar
获取可变 foo
数组吗?这听起来不太可能,而且可能不是您真正想要的,除非您正在进行大而痛苦的重构。
更好的选择是:
// Return a mutable foo array from a mutable bar.
foo* get_array_of_foo() {return array_of_foo;}
// and/or
// Return a const foo array from a const bar.
const foo* get_array_of_foo() const {return array_of_foo;}
但是,如果您确实确实需要这样做,那么您可以使用const_cast<>
摆脱困境。
foo* get_array_of_foo() const {return const_cast<foo*>(array_of_foo);}
话虽这么说,但这是一个巨大的代码味道,也是最后的手段。
问题是 getter 必须处理 const
bar
对象。但是编译器说:
[Error] invalid conversion from 'const foo*' to 'foo*' [-fpermissive]
代码:
class foo
{
private:
string name;
public:
foo()
{
name = "default";
}
};
class bar
{
private:
foo array_of_foo[43];
public:
foo* get_array_of_foo() const { return array_of_foo; }
};
您 实际上 需要从常量 bar
获取可变 foo
数组吗?这听起来不太可能,而且可能不是您真正想要的,除非您正在进行大而痛苦的重构。
更好的选择是:
// Return a mutable foo array from a mutable bar.
foo* get_array_of_foo() {return array_of_foo;}
// and/or
// Return a const foo array from a const bar.
const foo* get_array_of_foo() const {return array_of_foo;}
但是,如果您确实确实需要这样做,那么您可以使用const_cast<>
摆脱困境。
foo* get_array_of_foo() const {return const_cast<foo*>(array_of_foo);}
话虽这么说,但这是一个巨大的代码味道,也是最后的手段。