如何创建指向数组类成员的指针?
How do I create a pointer to an array class member?
我正在尝试使用 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++11中基类的类C数组成员
- 为什么静态数组成员变量在调用对象的实例后不显示任何内容?
- C++ - 移动具有固定大小的 c 样式数组成员的类的构造函数
- C++内联数组成员统一初始化
- 有没有办法把字符串数组成员放在".structurevariable"前面?
- 将初始化列表传递给 C++ 中的数组成员
- 具有灵活数组成员的结构的大小
- 初始化固定的 C 数组成员结构
- 带有布尔数组成员的 C++ 结构.如何在主代码中使用
- 我如何通过构造函数大小私人std ::数组成员
- 通过两个下标访问数组成员
- size_t结构非数组成员崩溃的强制转换
- 删除数组成员的更好方法是什么?
- 从C 到C#调用INT []显示随机大数字,而不是原始数组成员
- 在C 中的数组初始化期间使用数组成员
- 友元函数将内存分配给数组成员是否有任何限制?
- 从结构传递数组成员会导致访问读取冲突
- 为什么 const char 数组成员的初始化在构造函数初始值设定项中不兼容
- 如何在 lambda 中访问数组成员
- 将整数值分配为variadic模板列表到静态const std ::数组成员