Я хочу предоставить класс с функцией-членом, которая будет инициализировать всех членов класса отдельно.
например
#include <iostream>
using namespace std;
int x = 10;
class my{
public:
my():init{}
int &i;
void init()
{
i = x;
}
};
int main()
{
my m;
return 0;
}
Я знаю, могу ли я использовать "class my : i(init())"
будет работать, но у меня есть особая цель инициализировать, как указано выше.
Однако в приведенном выше примере я получаю следующую ошибку:
В классе «my» нет поля с именем «initMy».
Как решить это?
Если вы пытаетесь написать конструктор для class my
, тогда он должен быть назван с именем класса. Следующее будет работать при условии, что initMy
это имя другого класса, который вы пытаетесь подкласс.
class my : initMy
{
public:
int i;
my() {
i = 10;
}
};
Вы можете попытаться предварительно инициализировать все поля, а затем вызвать функцию инициализации внутри конструктора:
class my {
public:
int i;
void initMy() {
i = 10;
}
my() : i(0) { initMy(); };
};
Вы также можете (в C ++ 11) определить причудливую подпись для частного конструктора и делегировать ему конструктор
class my {
private:
void initMy () { i=10; };
enum privateen {privatev};
my(enum privateen) : i(0) { initMy(); };
public:
my() : my(privatev) {};
int i;
};
На самом деле, я считаю, что ваша инициализация должна быть в конструкторе, а не в какой-то другой функции.
Несколько вещей, чтобы уточнить здесь.
age(newAge)
это не функция. Это инициализация age
переменная.class Man{
private:
int age;
string name;
public:
Man(int newAge):age(newAge),name("Jhon"){}
};`
class Man{
private:
int age;
string name;
public:
Man(int newAge)
{
age = newAge;
name = "Jhone";
}
};
init
Метод инициализации, если у вас есть проблемы с использованием конструктора.class Man{
private:
int age;
string name;
public:
Man(){}
init(int newAge, string newName)
{
age = newAge;
name = newName;
}
};
класс Man {
частный:
в возрасте;
имя строки;
public:
Man(){}
setAge(newAge)
{
age = newAge;
}
setName(newName)
{
name = newNAme
}
};
редактировать:
class Man{
private:
int age;
string name;
public:
Man(initAge, initName)
{
setValues(initAge, initName);
}
setValues(newAge, newName)
{
age = newAge;
name = newName;
}
};
int main()
{
Man goodMan(34,"Jhon");
goodMan.setValues(45,"Kevin");
}