gpt4 book ai didi

c++ - 模板-无法将函数定义与现有声明c++匹配

转载 作者:行者123 更新时间:2023-12-02 11:06:53 24 4
gpt4 key购买 nike

我尝试使用模板,但我对模板完全陌生。一旦开始,我会得到一些错误,我不明白这是什么意思?
所以文字在这里,我正在努力做:

编写一个基于模板的类,以实现一组项目。上课应该允许
用户
一种。将新项目添加到集合中。
b。获取集合中的项目数。
C。获取一个指向动态创建的数组的指针,该数组包含集合中的每个项目。的
该函数的调用者负责释放内存。

错误是:

Item::output':无法将函数定义与现有声明匹配

Item::in':无法将函数定义与现有声明匹配

添加”:不是“项目”的成员

我的代码在这里:

#include <iostream>
using namespace std;

template<class T>
class Item {
private:
Item();
~Item();
void Add(T item);
int get();
void output(T array);
bool in(T item);
T *array;
int element;
int size;
};

template<class T>
Item<T>::Item()
{
element = 0;
size = 10;
array = new T[size];
}

template<class T>
Item<T>::~Item()
{
delete[] array;
}
template<class T>
void Item<T>::add(T item)
{
if (in() == false)
{
size++;
array[size] = Item;
}
}

template<class T>
void Item<T>::in(T item)
{
for (int i = 0; i < size; i++)
{
if (array[i] == Item)
{
return true;
}
else
{
return false;
}
}
}

template<class T>
int Item<T>::get()
{
return element;
}

template<class T>
void Item<T>::output()
{
for (int i = 0; i < size; i++)
{
cout << array[i] << endl;
}
}



int main()
{





system("pause");
return 0;

}

最佳答案

我继续并纠正了所有编译器错误,但是请您必须再次研究文本框(或其他内容)。

我评论了我必须替换的行:

#include <iostream>
using namespace std;

template<class T>
class Item {
private:
Item();
~Item();
void Add(T item);
int get();
// void output(T array);
void output();
bool in(T item);
T *array;
int element;
int size;
};

template<class T>
Item<T>::Item()
{
element = 0;
size = 10;
array = new T[size];
}

template<class T>
Item<T>::~Item()
{
delete[] array;
}
template<class T>
void Item<T>::Add(T item)
//void Item<T>::add(T item)
{
if(in(item) == false)
// if (in() == false)
{
size++;
// array[size] = Item;
array[size] = item;
}
}

template<class T>
//void Item<T>::in(T item)
bool Item<T>::in(T item)
{
for (int i = 0; i < size; i++)
{
// if (array[i] == Item)
if(array[i] == item)
{
return true;
}
else
{
return false;
}
}
}

template<class T>
int Item<T>::get()
{
return element;
}

template<class T>
void Item<T>::output()
{
for (int i = 0; i < size; i++)
{
cout << array[i] << endl;
}
}



int main()
{
system("pause");
return 0;

}

但是您没有阅读编译器消息吗?我懂了:
C02QT2UBFVH6-lm:~ gsamaras$ g++ -Wall main.cpp
main.cpp:32:15: error: out-of-line definition of 'add' does not match any declaration in 'Item<T>'; did you mean 'Add'?
void Item<T>::add(T item)
^~~
Add
main.cpp:9:10: note: 'Add' declared here
void Add(T item);
^
main.cpp:37:23: error: 'Item' does not refer to a value
array[size] = Item;
^
main.cpp:5:7: note: declared here
class Item {
^
main.cpp:42:15: error: return type of out-of-line definition of 'Item::in' differs from that in the declaration
void Item<T>::in(T item)
~~~~ ^
main.cpp:12:10: note: previous declaration is here
bool in(T item);
~~~~ ^
main.cpp:46:25: error: 'Item' does not refer to a value
if (array[i] == Item)
^
main.cpp:5:7: note: declared here
class Item {
^
main.cpp:48:13: error: void function 'in' should not return a value [-Wreturn-type]
return true;
^ ~~~~
main.cpp:52:13: error: void function 'in' should not return a value [-Wreturn-type]
return false;
^ ~~~~~
main.cpp:64:15: error: out-of-line definition of 'output' does not match any declaration in 'Item<T>'
void Item<T>::output()
^~~~~~
7 errors generated.

关于c++ - 模板-无法将函数定义与现有声明c++匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38704598/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com