потому что он не может различить функции sin(),sqrt() и т.д даже с подключенной библиотекой math.h
Есть ли книжка, где подробно описаны линкер-скрипты
crt0
бутлоадеры
всякие такие вещи
g++ -v
.g++ --sysroot=/new/path/devkit-x86/sysroots/x86_64-pokysdk-linux
#include <functional>
class MessageCollectorClass
{
public:
void AddData(unsigned char* p, unsigned int i)
{
printf("%s: %p, %d\n", __func__, p, i);
}
};
class NamedPipeClass
{
public:
NamedPipeClass(const char* _pipeName, bool isClient, std::function<void(unsigned char*, unsigned int)> ReadCallBack)
{
onReadCallback = ReadCallBack;
};
std::function<void(unsigned char*, unsigned int)> onReadCallback;
void f()
{
onReadCallback((unsigned char *)0x12345678, 10);
}
};
int main()
{
MessageCollectorClass* msgCollector = new MessageCollectorClass();
NamedPipeClass* hltPipe = new NamedPipeClass("myfifo", true, std::bind(std::mem_fn(&MessageCollectorClass::AddData), msgCollector, std::placeholders::_1, std::placeholders::_2));
hltPipe->f();
return 0;
}
простым языком
В другом классе я создаю указатель для этой функции.
void(InventoryContainer::*fnDelete)(unsigned int);
Но при попытке вызвать эту функцию,
this->fnDelete(this->IFrom);
студия показывает мне что this в данном случае не корректен.
1. Как правильно вызвать функцию?
InventoryContainer *that;
...
(that->*fnDelete)(IFrom);
2. Где то на StackOverflow видел,что для вызова такой функции нужен ещё объект.Не лучше ли тогда просто передать ссылку на объект и через него и вызвать функцию?
class A {
public:
void f1();
void f2();
};
void (A::*f)();
if (???)
f = &A::f1;
else
f = &A::f2;
...
A *pa;
...
(pa->*f)(); // вызывает f1 или f2
Between the previous and next sequence point an object shall have its stored value
modified at most once by the evaluation of an expression. Furthermore, the prior value
shall be read only to determine the value to be stored.