У вас, похоже, есть макрос, определенный в test.cpp
строке 6, который является строкой, заменяющей вашу попытку вызова функции size
.
Ваша строка на самом деле говорит:
cout << bs.16() << endl;
cout << bs2.16() << endl;
cout << bs3.16() << endl;
Если вы хотите использовать макросы, рекомендуется сделать их как можно более описательными и использовать ALL_UPPER_CASE
, чтобы избежать подобных проблем.
например.
#define BITSET_DEFAULT_SIZE 16
Описания ошибок, данные вам компилятором, очень наглядны и сообщают, что причиной этой проблемы является макрос:
test.cpp:28:16: error: expected unqualified-id
cout << bs.size() << endl; <- this is telling you the starting position of the error
^
test.cpp:6:14: note: expanded from macro 'size'
#define size 16 <- this is telling you a macro is involved, and giving its value
Кроме того, не рекомендуется использовать using namespace std
в своих программах, поскольку std
содержит так много общих именованных функций. Например, если вы создаете функцию с именем size
, вы неожиданно перезаписываете std::size
.
Вот хороший пост, указывающий, почему это плохая идея