我有一个包含许多不同变量的类,例如那里有一些多维向量.
我听说你可以直接将数据存储和加载到文件中,但程度如何呢?
例如,如果我创建此类的实例,填充它,然后将其保存到文件,我可以以相同的方式加载它吗?喜欢它是如何工作的?我只是一次性保存它还是我必须以某种方式分割数据?
我应该#include每个header/cpp文件中需要的所有内容吗?我正在研究2d游戏引擎atm(主要用于练习)并且在查看我的代码时我发现我几乎在每个文件中都重复了字符串和向量.这是一个问题,我该如何处理?
我一直认为你写的每个课程或模块都应该站在自己的两条腿上,可以这么说.我非常喜欢通用编程(我在引擎中包含我自己的脚本语言,使用我自己的草稿脚本引擎)但我也意识到它可能会导致很多开销和混乱.
我正在学习并发编程,我想要做的是有一个类,每个对象负责运行自己的Boost:Thread.我对这段代码略胜一筹,因为它使用了很多我不太熟悉的功能(动态分配内存,函数指针,并发等等).这就像每行代码我必须检查一些引用才能使它正确.
(是的,在实际代码中考虑了所有分配的内存!)
我遇到了互斥体问题.我声明它是静态的,它似乎为所有实例获得相同的值(应该如此).代码仍然不是线程安全的.
互斥锁应该阻止线程(右边?)进一步前进以防其他人锁定它.因为互斥量是作用域的(一种简洁的功能)并且它在if语句中应该看其他线程没有?我仍然得到控制台输出,明确暗示它不是线程安全的.
此外,我不确定我是否正在使用静态可变权利.我尝试了不同的方式来引用它(Seller :: ticketSaleMutex),但唯一有效的是"this-> ticketSaleMutex",它看起来非常阴暗,似乎打败了静态的目的.
Seller.h:
class Seller
{
public:
//Some vaiables
private:
//Other variables
static boost::mutex ticketSaleMutex; //Mutex definition
};
Run Code Online (Sandbox Code Playgroud)
Seller.cpp:
boost::mutex Seller::ticketSaleMutex; //Mutex declaration
void Seller::StartTicketSale()
{
ticketSale = new boost::thread(boost::bind(&Seller::SellTickets, this));
}
void Seller::SellTickets()
{
while (*totalSoldTickets < totalNumTickets)
{
if ([Some time tick])
{
boost::mutex::scoped_lock(this->ticketSaleMutex);
(*totalSoldTickets)++;
std::cout << "Seller " << ID << " sold ticket " << *totalSoldTickets << std::endl;
}
}
}
Run Code Online (Sandbox Code Playgroud)
main.cpp中:
int main(int argc, char**argv)
{
std::vector<Seller*> seller;
const …Run Code Online (Sandbox Code Playgroud)