同时具有常量指针和非常量指针数组的能力
Ability to have an array of both const and non const pointers
我正试图用下面的代码解决电磁模拟问题。My Node类有一个成员函数,它接受问题数组,并基于相邻节点进行计算。
我们有一些约束,为了实现它们,我将这些节点创建为const。例如,x+和y+边保持在100。
然后,当constNode被要求计算一个新值时,它什么也不做,这要归功于类声明中的以下函数定义:
void iteration( Node* array);
void iteration( const Node* array) const;
代码的其余部分如下所示:
#include "node.h"
int main () {
int max_x = 10;
int max_y = 10;
Node* problem[max_x][max_y];
int i, j;
for (i = 0; i < max_x; i++) {
for (j = 0; j < max_y; j++) {
if ((i == max_x) || (j == max_y)) {
problem[i][j] = new const Node(i, j, 100);
}
}
}
return 0;
}
我是不是搞错了?我得到的错误是:
assigning Node * from incompatible type const Node *.
很明显,因为我不能使const节点不是const。
您应该从新节点声明中删除const
:
problem[i][j] = new Node(i, j, 100);
或将节点阵列声明为
const Node* problem[max_x][max_y];
通常,编译器可能会对const <type>
和<type>
(以及指向它们的指针)进行不同的处理,因此不鼓励将它们混合在一起(您可以使用不安全的const强制转换,但不建议这样做)。
相关文章:
- 将常量指针引用绑定到非常量指针
- 如何使用数据对象上的常量指针初始化类
- 为什么我收到"从常量指针到指针的转换无效?
- C++/QT:使用指向私有成员的常量指针作为只读数据共享
- 是否可以使用非常量指针调用非常量函数,以及当两个unique_ptrs指向同一个对象时程序的行为方式?
- 为什么C++中没有常量引用,就像常量指针一样?
- 对于非常量指针类型的参数,未调用具有常量指针模板类型参数的功能
- 将常量指针强制转换为非常量
- 带有常量指针的矢量构造函数示例
- 什么是常量指针常量引用类型的参数?(const X* const & p)
- 在多线程函数中返回共享的常量指针会导致计时问题吗?
- 常量指针上的混乱
- 使用 static_cast 时指向常量指针的原因
- 如何在C++中定义常量指针数组?
- 测试此指针的常量指针性质
- 当常量指针用作函数的参数时
- C++ - 无法将顶部常量指针分配给另一个非常量指针
- 在不同类型之间转换常量指针
- 解构常量指针?
- 为什么 std::vector<>::const_reference 可以转换为非常量指针?