根据我之前的问题,我希望a boost::shared_ptr<A>实际上是A(或许是A*)的子类,以便它可以用在A*作为参数的方法中.
考虑以下课程:
class A
{
public:
A(int x) {mX = x;}
virtual void setX(int x) {mX = x;}
virtual int getX() const {return mX;}
private:
int mX;
};
Run Code Online (Sandbox Code Playgroud)
在上一个问题中,我提议创建一个SharedA对象来处理这个问题,并且可能是这样做的.
class SharedA : public A
{
public:
SharedA(A* a) : mImpl(a){}
virtual void setX(int x) {mImpl->setX(x);}
virtual int getX() const {return mImpl->getX();}
private:
boost::shared_ptr<A> mImpl;
};
Run Code Online (Sandbox Code Playgroud)
如果我可以创建一个模板类来为我处理所有这些问题,那将是Grrrrrrrrreat想的.
template <class T>
class Shared : public T
{
public:
SharedT(T* t) : mImpl(t) …Run Code Online (Sandbox Code Playgroud) 我正在探索wxWidgets,同时学习C/C++.通常wxWidgets函数期望wxString而不是a string,因此wxWidgets 为创建s 提供了一个宏wxT(yourString.我的问题涉及这个宏观的扩展.如果键入扩展的宏读取.这在C中有什么意义?L是一个用参数"banana"调用的函数吗?)wxStringwxT("banana")L"banana"
我是linq-to-sql的新手(也就是sql),我已经开始收集证据证明我可能没有以正确的方式做事,所以我想看看你们都要说些什么.
在我的员工分配应用程序中,我允许用户在员工和项目之间创建分配.在应用程序开始时,我打开了一个linq-to-sql数据上下文到我的管理数据库.在整个计划中,我从不放弃数据上下文.事实上,大多数表单构造函数都将此数据上下文作为其参数之一.
我有点认为这是做事的方式,直到我读到另一个SO问题,其中提问者正在讨论在整个程序中重复地重新创建数据上下文,然后根据需要将实体"附加"到新的数据上下文中.这可以帮助我解决我遇到的问题,其中的东西"潜入"我的数据库.
那么你会在哪里使用第一种风格(并且不要羞于说永远),你会在哪里使用第二种风格?
代码很简单:
#include <iostream>
#include <fstream>
#include <string>
int main(int argc, char* argv[] )
{
std::ofstream theStream;
theStream.open("trash.txt");
theStream << "some words" << std::endl;
theStream.close();
}
Run Code Online (Sandbox Code Playgroud)
如果我从命令行运行它,那么我在同一目录中获取预期的文件.如果一个包在MacOS .app中的可执行文件的内容,那么没有文件写在任何地方.(或许它只是被及时删除?)
这是我用来将可执行文件放入.app的简单脚本.也许这就是我出错的地方.
#!/bin/bash
appName=MyApp
if [ $1 ]
then
appName=$1
else
echo "usage: convertToApp executableFile"
exit
fi
if [ -e "$appName" ]
then
mkdir $appName.app
mkdir $appName.app/Contents
mkdir $appName.app/Contents/MacOS
mkdir $appName.app/Contents/Resources
cp $appName $appName.app/Contents/MacOS/$appName
echo -n 'APPL????' > $appName.app/Contents/PkgInfo
else
echo "specified file does not exist"
fi
Run Code Online (Sandbox Code Playgroud)
知道为什么我看不到我想看的文件吗?
我有一个函数,它接受一个输入字符串,然后通过几个正则表达式运行字符串,直到找到匹配.找到匹配后,我返回一个输出,该输出是原始字符串和匹配的函数.所以在红宝石中:
str = "my very long original string ... millions of characters"
case str
when regex1
do_something1(str,$1)
when regex2
do_something2(str,$1)
when regex3
do_something3(str,$1)
...
when regex100000
do_something100000(str,$1)
else
do_something_else(str)
end
Run Code Online (Sandbox Code Playgroud)
现在,Ruby实际上是在优化这个开关循环,以便str只被遍历一次吗?假设它不是,那么使用嵌入了回调的一个很长的正则表达式可以更有效地执行此功能.像这样的东西:
/(?<callback:do_something1>regex1)|
(?<callback:do_something2>regex2)|
(?<callback:do_something3>regex3)|
...
(?<callback:do_something100000>regex100000)/
Run Code Online (Sandbox Code Playgroud)
是否有任何技术可以做到这一点?
考虑Neo4J 2.0 Cypher查询
MERGE (u:User {id_str:"123"})
ON CREATE SET
u.name="Bob",
ON MATCH SET
u.phone_num="555-4152"
RETURN u
Run Code Online (Sandbox Code Playgroud)
这是一个愚蠢的查询-不用担心这里的意图。问题是,我如何理解此查询是创建还是仅找到一个节点?
更新
也许我应该进一步激励我为什么要这种行为。原因如下:如果该节点已经存在,则不必转到远程服务器(在我的情况下为Twitter API)并下载用户的所有元数据。如果ON CREATE可以以某种方式链接回回调以拉出此数据,那就太好了。这种行为在Cypher中似乎不太可能实现。因此,大概我想做的是一个匹配,如果获取返回NULL,那么我将调出Twitter API,获取元数据并进行创建。
所以我从Java/C#转向C++相当混乱.虽然我觉得我理解了大部分的基础知识,但是在我的理解中存在一些巨大的漏洞.
例如,考虑以下功能:
Fruit&
FruitBasket::getFruitByName(std::string fruitName)
{
std::map<std::string,Fruit>::iterator it = _fruitInTheBascit.find(fruitName);
if(it != _fruitInTheBascit.end())
{
return (*it).second;
}
else
{
//I would so love to just return null here
}
}
Run Code Online (Sandbox Code Playgroud)
哪里_fruitsInTheBascit是std::map<std::string,Fruit>.如果我查询getFruitByName("kumquat")你知道它不会在那里 - 谁吃金橘?但我不希望我的程序崩溃.在这些情况下应该做些什么?
PS告诉我任何其他我尚未确定的愚蠢行为.
啊,我是一个可怜的菜鸟,下面的html文件并没有提醒任何人,我的呼救声.谁知道为什么?
<html>
<head>
<script type="text/javascript"
src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
alert('Somebody please help me.');
});
</script>
</head>
<body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 假设我已将我自己的Twitter图形下载到Neo4J中.我想找到那些跟随我的朋友的人数量应该超出预期.更具体地说,我想找到跟随我关注的人的人,但我希望对结果进行排序,以便跟随我朋友数量最多的人排序.可能在Cypher?
c++ ×3
cypher ×2
neo4j ×2
c ×1
callback ×1
django ×1
html ×1
javascript ×1
jquery ×1
linq-to-sql ×1
macos ×1
macros ×1
null ×1
pimpl-idiom ×1
regex ×1
ruby ×1
shared-ptr ×1
templates ×1