gpt4 book ai didi

c++ - 如何创建指向数组类成员的指针?

转载 作者:行者123 更新时间:2023-11-28 01:52:25 25 4
gpt4 key购买 nike

我正在尝试使用 find 函数从我的哈希表中返回数组 @element 的地址。但是,我收到编译器错误:

QuadraticProbing.cpp:134:59: error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]
return isActive( currentPos ) ? wordElement : ITEM_NOT_FOUND;

基本上,我只想返回一个指向@element 的指针。所以我尝试创建一个指向 @element 的指针 wordElement 并尝试返回 wordElement。但这没有用。这是我的代码片段,我不知道如何在 HashEntry 中获取指向 @element 的指针。

//Main
int main()
{
QuadraticHashTable<char*> table(100);
table.insert("HELLO WORLD");
if (table.find(document[i]) == NULL))
cout << "OH NO!";
}

//Class that has element that I want to return in find.
template <class HashedObj>
class QuadraticHashTable
{
public:
QuadraticHashTable()

const HashedObj & find( const HashedObj & x ) const;

enum EntryType { ACTIVE, EMPTY, DELETED };
private:
struct HashEntry
{
char element[20];
EntryType info;


HashEntry( const HashedObj & e = HashedObj( ), EntryType i = EMPTY )
: info( i )
{
if (e != NULL)
strcpy(element, e);
}
};
vector<HashEntry> array;

//Find Function
template <class HashedObj>
const HashedObj & QuadraticHashTable<HashedObj>::find( const HashedObj & x ) const
{
int currentPos = findPos( x );
const char * wordElement = array[currentPos].element;
return isActive( currentPos ) ? wordElement : ITEM_NOT_FOUND;
}

最佳答案

QuadraticHashTable<char*> table(100);
table.insert("HELLO WORLD");

HashedObject 是一个char*

您将 "HELLO WORLD" 传递给 insert,它需要一个 const HashedObject&

那里的 const 适用于顶层,所以它是 char* const& 而不是 const char*& (这将是一个不同的错误)。

鉴于您的条目基本上是 char[20] 以及您编写条目的方式,此代码仅在 HashedObject 是原始 C 字符串时才有效。模板参数在编写时毫无意义。就是这样。

但是 char const* 作为模板参数是使代码编译的另一种方式。但实际上,仅适用于一种类型的模板是毫无意义的。

关于c++ - 如何创建指向数组类成员的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42466178/

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