Как инициализировать тип класса, используемый в качестве параметра функции

Я пытаюсь справиться с преобразованиями HDL в C ++ и натолкнулся на некоторую загадку.
Преобразование с использованием Verilator в Ubuntu достаточно простое, но меня раздражает один тип данных.

Верхний код в иерархии …

#include <iostream>
#include "VDorQ24Syms.h"#include "VDorQ24.h"
using namespace std;
// FUNCTIONS
VDorQ24Syms::VDorQ24Syms(VDorQ24* topp, const char* namep)
// Setup locals
: vm_namep(namep)
, vm_activity(false)
, vm_didInit(false)
// Setup submodule names
{
// Pointer to top level
tOPp = topp;
// Setup each module's pointers to their submodules
// Setup each module's pointer back to symbol table (for public functions)
tOPp->Vconfigure(this, true);
// Setup scope names
}

Передача данных в функцию

VDorQ24Syms::VDorQ24Syms(VDorQ24* topp, const char* namep)

это то, что я не получаю. Второй параметр легко понять. Во-первых, не так уж и много.

Под этим я подразумеваю, что ожидает от меня компилятор? Какой тип данных?

Я хочу передать данные так …

VDorQ24* randomCharacter;
if (VDorQ24Syms(randomCharacter, szAscii) == /*condition*/)
{
return /*value*/;
}

Но «randomCharacter» неинициализирован.

VDorQ24* randomCharacter = /*How do I initialize this?*/;

-1

Решение

Ваш пример не завершен, но это может вам помочь.

Ваша переменная randomCharacter не экземпляр вашего класса VdorQ24это указатель на ваш класс.

Если вы хотите инициализировать вашу переменную, установите ее в nullptr:

VdorQ24* randomCharacter = nullptr; // now you can be 100% certain that it's null.

Если вы на самом деле хотели создать новый экземпляр VdorQ24Вы можете просто забыть об указателе и использовать значения. Здесь мы вызываем конструктор по умолчанию:

// Not a pointer, initialize the instance of your class directly.
VDorQ24 randomCharacter;

//              v---- Here we send a pointer to your variable using the '&' operator.
if (VDorQ24Syms(&randomCharacter, szAscii) == /*condition*/)
{
return /*value*/;
}

Если вы хотите отправить параметр в конструктор, вы можете использовать этот синтаксис:

VDorQ24 randomCharacter{param1, param2};

Фактически, любой тип может быть инициализирован с этим синтаксисом, даже int и массивы:

int a{1};

float b[] = {1.f, 2.f, 3.f};
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]