Проблемы при доступе к шаблонному массиву элементов - PullRequest
1 голос
/ 19 июня 2020

У меня есть класс, который выделяет локальный массив стека. Вот как он должен быть распределен:

MyClass<char, 255> my_arr{};

Это должно создать локальный член, который будет char m_Arr[255].

Вот как он определяется:

private:
    Type*           m_Buffer[Size];
    unsigned int    m_Size;

Вот класс с конструктором:

template<class Type, unsigned int Size>
class MyClass {
public:
MyClass() : m_Size{}
{

}

Когда возникают ошибки?

Они происходят во время компиляции. Функции моего потока - constexpr (он предназначен для шифрования строки и предлагает несколько функций, таких как разделение, переход к нижнему регистру, выделение дополнительной памяти в куче, если необходимо, и т. Д. c.)

** Что ошибки? *

Как только я добавляю следующий оператор:

operator Type*()
{
    return this->m_Buffer;
}

или

operator const Type*()
{
    return this->m_Buffer;
}

, я получаю следующие ошибки:

Error

После удаления я получаю сообщение об ошибке, что экземпляр класса не может быть преобразован в LPCTSTR (я передаю его API, который принимает этот тип аргумента)

Если я заменю его следующим:

Type* Get() {
return this->m_Buffer
}

и вызову его в функции API, все ошибки вернутся.

Примечание: Я пробовал чтобы создать уменьшенную версию этого кода, но я не могу воссоздать ее нигде, кроме своего кода (300 строк кода). Я сделаю все возможное, чтобы предоставить достаточно информации, чтобы, надеюсь, решить эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...