1

我有一个模板类节点,我想创建一个它的对象数组并将其传递给一个函数。我怎么做?

Node<char> w1, w2, w3, w4;
Node<char> **s1 = new Node<char>* [3];
s1[0] = &w1; s1[1] = &w2; s1[2] = &w3;
w4.meet_neighbors(s1);

我之前有以下原型:

template<typename T>
void Node<T>::meet_neighbors(Node<T>**);

以这种方式进行探测会导致以下错误:

error: no matching function for call to ‘Node<char>::meet_neighbors(Node<char>**&)
note: candidates are: void Node<TW>::meet_neighbors(const Node<TW>**) [with TW = char] <near match>

我不明白哪个结果。请帮忙。

4

2 回答 2

2

&这两个函数是不同的,不是因为错误日志1中有一个附加函数,而是因为其中一个是const指针而另一个不是。

1在 C++ 错误日志(至少 g++)中,甚至f(int)显示为f(int&).

于 2012-05-05T12:19:35.597 回答
0

你需要做这样的事情:

Node<char>** s1 = new Node<char>*[4];
s1[0] = &w1; s1[1] = &w2; s1[2] = &w3;
w4.meet_neighbors(s1); Node<T>::meet_neighbors(Node<T>**);
/*...*/
delete[] s1;

但是你真的应该考虑使用一些 STL 容器而不是数组,比如 std::vector。您可能会注意到您的meet_neighbors()函数无法确定数组参数的大小。您需要将一些容器传递给它或添加一个数组大小参数。

于 2012-05-05T01:21:12.667 回答