如果我想表示使用二进制的"标志",这样我可以通过他们,并将它们存储到像一个对象状态或期权或类似的东西OPTION1 | OPTION2在那里OPTION1是0001 OPTION2是0010,这样,所获取传递为0011,较选项的组合.
我将如何在C++中执行此操作?我在想类似的东西
enum Option {
Option_1 = 0x01,
Option_2 = 0x02,
Option_3 = 0x04,
//...
}
void doSomething(Option options) {
//...
}
int main() {
doSomething(Option_1|Option_2);
}
Run Code Online (Sandbox Code Playgroud)
但理想情况下,doSomething知道如何解释给定的选项.
我是在正确的轨道上吗?有没有更好的办法?
更新
我不是必须Option为每种可能的组合定义一个吗?
假设我有一个PHP模型 - 视图 - 控制器框架,它将地址映射http://example.com/admin/posts/edit/5到一个看起来像的动作
Posts_Controller::editAction($id)
Run Code Online (Sandbox Code Playgroud)
在文件中 /admin/controllers/posts.php
现在,我所看到的许多现有PHP框架都可以通过类似的方式实现
$module = Router::getModule(); // "admin"
$controller = Router::getController(); // "posts"
$action = Router::getAction(); // "edit"
$params = Router::getParams(); // array(5)
$controller_file = "/".$module."/controllers/".$controller.".php";
$controller_classname = ucfirst($controller)."_Controller";
$method = $action."Action";
require_once $controller_file;
$controller_obj = new $controller_classname();
call_user_func_array(array($controller_obj,$method),$params);
Run Code Online (Sandbox Code Playgroud)
对我来说,这闻起来很糟糕,看起来太"神奇"了:我不相信你应该能够根据字符串动态创建类,然后调用指定为字符串的方法.
我也看到了使用反射来调用动作的替代方法,这些方法也有些不好.
现在想象一下,我有一个更大的模块化CMS,它建立在类似的MVC框架之上,每个"页面"类型都有一个数据库表:博客,静态,相册等...我想这个实现是类似于我之前的例子.
我是唯一一个认为这是坏事的人吗?如果没有,是否应该有一种能够涵盖这种情况的设计模式?
是否有一些好方法可以将包含有关模块,控制器,操作和参数的信息的查询映射到
那使用尽可能少的 "魔法"(字符串到类或反射方法或反射)?
更好的是:如果没有反射,如何在C#或Java中完成?我可以允许连接字符串到达文件位置.
我正在尝试使用CodeIgniter 1.7.2创建一个图像上传表单
但是,当我尝试上传图像时,CI通知我上传目录无效.
为了检查这一点,我将一个文件上传到uploads目录中test.txt,Hello, World!然后用内容调用它,然后回显它的内容,然后,它说,你好.除此之外,我可以浏览目录并在我的浏览器中查看它的内容,因此目录肯定存在且可见.
控制器:
class Pictures extends Site_Controller {
// snip...
public function upload() {
$this->load->helper('form');
$this->_render('Do Upload','pictures/upload',array('msg'=>''));
}
public function do_upload() {
$this->load->helper('form');
$config['upload_path'] = base_url().'uploads/';
// test the directory:
// echo file_get_contents($config['upload_path'].'test.txt');
// should echo "Hello, World!"
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '2048';
$config['max_width'] = '1024';
$config['max_height'] = '768';
$this->load->library('upload', $config);
if ( ! $this->upload->do_upload())
{
$data = array('msg' => $this->upload->display_errors());
$this->_render('Do Upload (Errors!)','pictures/upload',$data);
}
else
{
$uploaddata = $this->upload->data(); …Run Code Online (Sandbox Code Playgroud) 我正在做一些MySQL和PHP的实验,我很想创建一个漂亮的"日期选择器",例如选择日期2010-11-11(今天的日期).
我想在我的MySQL数据库中存储有效的DATETIME值,并且我想要一个PHP页面来提供年,月和日的滚动列表(例如2010-11-11),以避免强制用户在日期中手动编写日期.形式然后做检查.
我的问题是,让我们说用户选择日期2010-11-31(不存在); 如何创建简单的滚动列表以便动态调整?也就是说,用户FIRST选择年份,然后是月份,最后是当天(动态改变以适应给定月份中的实际天数).希望闰年也将得到照顾.在全部选择并且用户按下提交后,脚本将向数据库提交格式正确的DATETIME值(例如YYYY-MM-DD或YYYYMMDD).
据我所知,DATETIME类型是严格的标准,这意味着服务器将跟踪无效日期,这应该足够容易进行错误检查.但我想通过做上面描述的事情来避免这种情况.
你会说我只用PHP(和MySQL)很容易实现我描述的'解决方案'吗?或者我需要一些其他东西(例如AJAX/JavaScript,JQuery等)来管理它?任何建议和指示都是非常受欢迎的,尤其是可能更容易实现的同一问题的替代方法.提前致谢!
我想在我的MacBook上进行一些Flash开发,利用Flex 3 SDK将Actionscript 3编译成SWF电影.
我如何设置我的Mac来做到这一点?
我还想了解flash编译器如何将包名称解释为目录结构.
我在高中时参加过Flash课程,但它非常依赖Adobe Flash IDE的使用,并且非常注重图形开发,而不是编程和OOP.
我想,例如,有一个Application类,它将作为舞台,以及多个其他AS3类作为其他MovieClip,Sprite等.当我构建/编译时,项目目录中的所有类都应该构建到单个.swf文件.
这种情况是否现实?可实现的?如果是这样,我该如何到达那里?
谢谢!
我最近一直在努力学习C++和Qt4,但我遇到了绊脚石.
我有以下类和实现:
class Window : public QWidget
{
public:
Window();
public slots:
void run();
private:
//...
};
Run Code Online (Sandbox Code Playgroud)
和
Window::Window()
{
//...
connect(runBtn,SIGNAL(clicked()),this,SLOT(run()));
//...
}
Window::run()
{
//...
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试构建并运行它时,尽管它构建得很好,它会立即退出并显示消息
Object::connect: No such slot QWidget::run()
Run Code Online (Sandbox Code Playgroud)
除非我做错了什么,否则Qt似乎没有认识到这个问题 run()
有人可以帮忙吗?
更新:
代码现在是:
class Window : public QWidget
{
Q_OBJECT
public:
Window(QWidget *parent = 0);
public slots:
void run();
private:
//...
};
Run Code Online (Sandbox Code Playgroud)
和
Window::Window(QWidget *parent) : QWidget(parent)
{
//...
connect(runBtn,SIGNAL(clicked()),this,SLOT(run()));
//...
}
Window::run()
{
//...
}
Run Code Online (Sandbox Code Playgroud)
该程序仍"意外完成",但不再告诉我没有这样的事情 QWidget::run()
在我的一个学校课程中,我使用以下函数来计算字符串中标识符的频率,用换行符和#分隔:
输入:
dog
cat
mouse
#
rabbit
snake
#
Run Code Online (Sandbox Code Playgroud)
功能:
//assume I have the proper includes, and am using namespace std
vector< pair<string,int> > getFreqcounts(string input) {
vector<string> items = splitString(input,"\n");
map<string,int> counts;
for (int i=0; i<items.size(); i++) {
if (items[i] == "#") continue;
counts[items[i]] = 0;
}
for (int i=0; i<items.size(); i++) {
if (items[i] == "#") continue;
counts[items[i]]++;
}
return vector< pair<string,int> > (counts.begin(),counts.end());
}
Run Code Online (Sandbox Code Playgroud)
我想至少
vector< pair<string,int> >有任何想法吗?
顺便说一句,这不是功课.真正的家庭作业将使用这个功能,但这完全出于我自己的好奇心和渴望拥有"更好"的代码.
我有一个非常简单的窗体,用户用来管理"商店".
每个商店都有一个名称和编号,并保存在相应的数据库表中.
表单有一个商店列表框,一个创建新商店的添加按钮,一个删除按钮和一个编辑按钮.
除了那些我有文字框的名称和数字,以及保存/取消按钮.
当用户从列表框中选择商店并单击"编辑"时,文本框将变为填充状态,保存/取消将变为活动状态.当用户点击"添加"时,我创建一个新的商店,将其添加到列表框,激活文本框和保存/取消按钮,然后在用户点击"保存"时将其提交到数据库,或者在用户点击时将其丢弃'取消'.
现在,我的事件系统看起来像这样(在psuedo-code中.它只是那么短.)
add->click:
store = new Store()
listbox.add(store)
populateAndEdit(store)
delete->click:
store = listbox.selectedItem
db.deleteOnSubmit(store)
listbox.remove(store)
db.submit()
edit->click:
populateAndEdit(listbox.selectedItem)
save->click:
parseAndSave(listbox.selectedItem)
db.submit()
disableTexts()
cancel->click:
disableTexts()
Run Code Online (Sandbox Code Playgroud)
问题在于我如何确定我们是在插入新商店还是更新现有商店.
对我来说显而易见的解决方案是使其成为一个"模态"过程 - 也就是说,当我单击编辑时,我进入编辑模式,并且保存按钮的工作方式与我处于添加模式时不同.
我知道我可以使它更像MVC,但我并不认为这种简单的形式值得增加复杂性.我对winforms不是很有经验,所以我不确定我是否有正确的想法来解决这个问题.
有一个更好的方法吗?我想保持简单,但可用.
c++ ×3
php ×3
binary ×1
c# ×1
codeigniter ×1
datepicker ×1
datetime ×1
file-upload ×1
flags ×1
flash ×1
javascript ×1
qt ×1
qt4 ×1
stl ×1
winforms ×1