我有一个struct类似于:
typedef struct _pair_t{
uint16_t keylen; // 2
uint32_t vallen; // 4
} __attribute__((__packed__)) pair_t;
Run Code Online (Sandbox Code Playgroud)
我将使用mmap从文件中读取,所以我想将数字存储为大端.
我是否需要这样做htobe16/ betoh16或者有一些__attribute__可以为我做到这一点?
我有这个非常简单的课程
class myclass {
public:
int id;
double x, y, z;
myclass() = default; // If I omit this line I get an error
myclass(int ID, double X, double Y, double Z): id(ID), x(X), y(Y), z(Z) {};
};
Run Code Online (Sandbox Code Playgroud)
如果我省略了该行的行myclass() = default;,然后尝试创建一个对象
#include <vector>
using namespace std;
int main() {
int ID = 0;
double X = 1.0, Y = 2.0, Z = 3.0;
vector<myclass> a_vector(10);
myclass an_object(ID,X,Y,Z);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我收到一个错误no matching function for call to ‘myclass::myclass() …
我有一个结构集.
struct Neighbour
{
int ID;
int Left;
int Right;
}
set<NodeNeighbour>NextDoor;
Run Code Online (Sandbox Code Playgroud)
如何在此集中找到ID =='要搜索的数字'?
使用straigth前向集,可以使用set.find()简单地找到一个项目.搜索一组结构有什么类似的东西吗?
Thx提前
我前几天正在使用xcode,正在开发基于文本的对话游戏.
#include <iostream>
int main()
{
std::cout<<"Conversation simulator requires you to type in all caps for all of your replies"<<std::endl;
std::cout<<"Type your first and last name!"<<std::endl;
std::string fname = " ";
std::string lname = " ";
bool samename = false;
std::cin>> fname >> lname ;
if (fname == "MUSCLE" and lname == "MAN")
std::cout<< "Wow, we have the same first and last name!"<<std::endl;
samename = true;
else
std::cout<< fname << " "<< lname << "is a very nice name"<<std::endl;
return …Run Code Online (Sandbox Code Playgroud) 在C++中声明结构有没有优势?为什么我不应该只创建一个只包含数据成员的类(即没有方法)?
谢谢,
我在Boost库中读取了类address_v4的源代码,并且有几个用BOOST_ASIO_DECL声明的构造函数(定义为内联)
/// Construct an address from raw bytes.
BOOST_ASIO_DECL explicit address_v4(const bytes_type& bytes);
/// Construct an address from a unsigned long in host byte order.
BOOST_ASIO_DECL explicit address_v4(unsigned long addr);
Run Code Online (Sandbox Code Playgroud)
(从此处http://www.boost.org/doc/libs/1_64_0/boost/asio/ip/address_v4.hpp)
# define BOOST_ASIO_DECL inline
Run Code Online (Sandbox Code Playgroud)
(从这里http://www.boost.org/doc/libs/1_64_0/boost/asio/detail/config.hpp)
那么,为c ++构造函数指定“内联”的目的是什么?它与函数的含义相同还是具有不同的含义?
以下代码的输出是0, 0.代码有什么问题?m通过引用传递,它应该是1,对吗?
int main()
{
int m = 0;
int n = 0;
[&, n]() {m = n + 1; };
cout << m << endl << n << endl;
}
Run Code Online (Sandbox Code Playgroud) 我正在编写一个简单的套接字C++类,它看起来像这样:
class Socket {
public:
// ...
void connect();
private:
// ...
int socket;
};
Run Code Online (Sandbox Code Playgroud)
我班有两个问题:
void Socket::connect()
我正在使用本机Linux套接字接口,这意味着已经有一个int connect(...)我想在Socket::connect()函数内部使用的函数.
int socket
同样的问题.类变量名与int socket(...)函数具有冲突的名称.
问:我是被迫更改的名称int socket和void connect()别的东西,还是有解决方法吗?
考虑以下嵌套for循环.我无法弄清楚为什么当内部for循环退出时,外部for循环尝试增加迭代器,但显然它不应该这样做.这导致了seg故障.如果具有条件,为什么外部for循环将继续运行cbeg != vec.cend().显然,在内for循环中检查条件没有问题,并且它正确退出.
我不相信任何迭代器在这里被无效,唯一的操作是增量.
vector<int> vec{1,2,3,4};
for (auto cbeg = vec.cbegin(); cbeg != vec.cend(); cbeg++)
{
for (; cbeg != vec.cend(); cbeg++) {
}
}
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么?
既然你可以做到std::unique_ptr<int> upi{new int},我立即对如何为什么std::unique_ptr<int*> upi{new int[42]{}}不起作用感到困惑.有人可以解释以下片段之间的区别吗?
{
std::unique_ptr<int> upi{new int[42]{}};
upi.get()[0];
}
// Doesn't work
{
std::unique_ptr<int> upi{new int[42]{}};
upi[0];
}
{
std::unique_ptr<int[]> upi{new int[42]{}};
upi.get()[0];
}
{
std::unique_ptr<int[]> upi{new int[42]{}};
upi[0];
}
// Doesn't work
{
std::unique_ptr<int*> upi{new int[42]{}};
upi.get()[0];
}
// Doesn't work
{
std::unique_ptr<int*> upi{new int[42]{}};
upi[0];
}
Run Code Online (Sandbox Code Playgroud)
编译器错误:
prog.cpp: In function ‘int main()’:
prog.cpp:8:20: warning: value computed is not used [-Wunused-value]
upi.get()[0];
^
prog.cpp:14:12: error: no match for ‘operator[]’ (operand types are ‘std::unique_ptr<int>’ …Run Code Online (Sandbox Code Playgroud) 我用什么编译器标志来完全摆脱异常处理?我根本不使用它们,但编译器仍然生成.pdata和.xdata部分,仅用于异常处理.
reference_wrapper当我resize()在下面的向量时,指向何处?这是一个未定义的行为吗?我该怎么做才能安全?
std::vector < std::reference_wrapper <int> > vec;
vec.resize(10);
Run Code Online (Sandbox Code Playgroud) 我有一个简单的二维向量类,它实现为内联函数/运算符.
但是,当我想要实例化没有参数的Vector时,我得到Unresolved externals错误,我不知道为什么.但是,当我使用带参数的其他构造函数时,它没问题.
这是我的班级:
class Vector2
{
public:
float x;
float y;
public:
//Constructors
Vector2() : x(0.0f), y(0.0f) {}
Vector2(const float _x, const float _y) : x(_x), y(_y) { }
};
Run Code Online (Sandbox Code Playgroud)
创建导致错误的实例:
Vector2 a();
Run Code Online (Sandbox Code Playgroud)
但是当用其他构造函数实例化时,它没问题.这也有效:
Vector2 a = Vector2();
Run Code Online (Sandbox Code Playgroud)
我明白了:
1>main.obj : error LNK2019: unresolved external symbol "class GreenEye::Maths::Vector2 __cdecl a(void)" (?a@@YA?AVVector2@Maths@GreenEye@@XZ) referenced in function main
1>X:\Development\Projects\Engine\x64\Debug\Test.exe : fatal error LNK1120: 1 unresolved external
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?谢谢.
c++ ×12
c++11 ×5
struct ×2
c ×1
c++14 ×1
cl ×1
class ×1
constructor ×1
declaration ×1
endianness ×1
if-statement ×1
inline ×1
int ×1
lambda ×1
pointers ×1
uint32-t ×1
unique-ptr ×1
vector ×1
visual-c++ ×1
xcode ×1