【发布时间】:2016-03-01 21:20:58
【问题描述】:
我的类 Graph 有一个构造函数:
template <typename T>
Graph<T>::Graph(T ** input)
{
graphData = input;
}
当我尝试使用二维数组而不是 int** 来创建此类的新实例时
int intArray[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
Graph<int>* IntGraph = new Graph<int>(intArray);
我有一个错误cannot convert parameter 1 from 'int [3][3]' to 'int **
我是 C++ 新手,我认为这些类型是兼容的。你能描述一下区别吗?
编辑: 由于这个问题被标记为重复,我还想问,将其中一种类型转换为另一种类型的最佳方法是什么,或者在不损失任何性能的情况下使用什么来代替
【问题讨论】:
-
谢谢,现在我明白了其中的区别。但是,我没有找到方法,如何将一个转换为另一个。
-
您在这里尝试做的事情看起来既危险又复杂。我可以看到来自将指向本地对象的指针传递给构造函数的未定义行为。帮自己一个忙,在
Graph中使用std::vector。 -
保留问题是附加第二个问题的特别糟糕的地方。您可能想提出一个新问题。
-
我很乐意,但系统不允许我再问 3 天的问题。我正在尽最大努力以正确的方式提出问题,但正如我所见,这台服务器对初学者不友好。
标签: c++ pointers multidimensional-array type-conversion