Если у меня есть классОшибка вызова внешней функции аксессора
Class A
{
public:
UINT getfoo();
... other stuff ...
private:
UINT initfoo (data);
UINT foo;
... other stuff ...
}
Идея заключается в том, в конструктор класса, я поставил
foo = initfoo (data);
getfoo простой возврат Постулаты
UNIT getfoo()
{
return foo;
}
Затем из внешней функции, где у меня есть экземпляр этого класса, я использую функцию доступа getfoo, чтобы получить значение foo в этом классе.
A a;
UINT myfoo;
...
myfoo = A::getfoo
-or-
myfoo = a.getfoo
Но когда я пытаюсь присвоить значение одного и того же типа во внешней функции, я получаю сообщение об ошибке.
Использование A :: VS2013 дает мне ошибку в редакторе
A value of type UINT (A::*)() cannot be assigned to an entity of type UINT
Используя. редактор не жалуется, но когда я пытаюсь скомпилировать я получаю ошибку:
error C2440: '=' : cannot convert from 'unsigned int (__thiscall A::*)(void)' to 'unsigned int'
Я уверен, что это является одним из основных C++ вопрос, и я искал много, но я не могу показаться, найти правильные условия поиска, чтобы выяснить мою проблему. Что я делаю неправильно в вызове функции?
Wow. Круглые скобки. Я новый, это было что-то очевидное. Я чувствую себя глупо, задавая вопрос сейчас, но спасибо за быстрый ответ. – Trashman
Я не проектировал initfoo как мутатор. Он просто возвращает начальное значение для foo на основе данных. Моя функция-конструктор инициализирует foo значением из initfoo и никогда не касается foo снова. Мое понимание - это мутаторы, которые обычно используются при вызове из внешней функции, чтобы попытаться изменить значение в классе. Как только foo установлен в конструкторе, я не хочу его снова изменять, поэтому я не использую мутатор. Я здесь не так? – Trashman
Нет, это звучит нормально, но может быть лучший способ добиться этого. Если вы действительно не хотите, чтобы член класса изменился, вы можете обеспечить его выполнение, сделав его «const» и инициализируя его в списке инициализаторов конструкторов. Я добавлю пример ответа. – rcs