Мой класс имеет член std::string received;
, инициализированный пустой строкой в своем конструкторе, вместе с функцией printReceived
, которая печатает строку в cout
.
В main()
создается экземпляр вышеуказанного класса и вызывается printReceived
.
Вместо получения пустой строки я получаю совершенно неожиданные значения (но всегда одинаковые):
Если printReceived
равно std::cout<<"Received ":<<received<<std::endl;
, я получу
Received: eived:
как вывод.
Строковая константа, присутствующая в функции другого класса , которая не называется , если этот файл связан.
Откуда это могло взяться? Это меня бесит ... Все переменные правильно инициализированы. У меня никогда раньше не было этой проблемы, и я много программировал на C ++.
Вот полный минимальный пример:
CellularTest.cpp
#include "A.h"
#include <iostream>
int main()
{
A s;
s.println("AT+CSQ");
return 0;
}
a.cpp
#include "A.h"
A::A()
: received("")
{
}
void A::println(char* s)
{
received+=s+'\n';
treatReceived();
}
void A::treatReceived()
{
std::cout<<"Received: "<<received<<std::endl;
}
хиджры
#include <iostream>
#include <string>
class A
{
public:
A();
void println(char* s);
private:
std::string received;
void treatReceived();
};
Makefile
CellularTest: CellularTest.o CellularTest.cpp A.o
g++ CellularTest.o A.o -o CellularTest
CellularTest.o: CellularTest.cpp
A.o: A.cpp A.h
clean:
rm *.o
rm CellularTest
Вывод, который я получаю:
Received: eived: