I have this struct:
struct NetDescriptor {
unsigned int inputNeuronCount = 1;
char **inputNeuronType = nullptr;
unsigned int hiddenNeuronCount = 0;
unsigned int *hiddenNeurons = nullptr;
unsigned int outputNeuronCount = 1;
char **outputNeuronType = nullptr;
};
And want to init it in a method of a other class with this code:
NetDescriptor nnDescriptor = {
3,
{"EAT\n","FOODL\n","FOODR\n"},
3,
{4,4,3},
3,
{"EAT\n","MOVEL\n","MOVER\n"}
};
But it only gives me this error:
line 3: error: braces around scalar initializer for type 'char**'
I tried:
{{"EAT\n"},{"FOODL\n"},{"FOODR\n"}},
But it doesnt change anything, i also tried it with std::string same result.
i just want a Structure which contains a array of strings either std::string or char* and i want to init it with STRUCT = { {"1","2","3"}}; or something like this.
Like this?
#include <iostream>
#include <string>
#include <vector>
struct NetDescriptor
{
char const *inputNeuronType[3];
};
struct NetDescriptorStr
{
std::string inputNeuronType[3];
};
struct NetDescriptorDynamic
{
std::vector<std::string> inputNeuronType;
};
int main()
{
NetDescriptor nnDescriptor = { { "EAT\n","FOODL\n","FOODR\n" } };
std::cout << nnDescriptor.inputNeuronType[1] << std::endl;
NetDescriptorStr nnDescriptorStr = { { "EAT\n","FOODL\n","FOODR\n" } };
std::cout << nnDescriptorStr.inputNeuronType[1] << std::endl;
NetDescriptorDynamic nnDescriptorDynamic = { { "EAT\n","FOODL\n","FOODR\n","EAT\n","FOODL\n","FOODR\n" } };
std::cout << nnDescriptorDynamic.inputNeuronType[4] << std::endl;
NetDescriptorDynamic nnDescriptorDynamic2;
nnDescriptorDynamic2.inputNeuronType.assign({ "EAT\n","FOODL\n","FOODR\n","EAT\n","FOODL\n","FOODR\n" });
std::cout << nnDescriptorDynamic2.inputNeuronType[4] << std::endl;
}