我有一个类有几个对象作为成员变量.我不希望在声明时调用这些成员的构造函数,所以我试图明确地挂起指向该对象的指针.我不知道我在做什么.O_O
在StackOverflow上,我似乎能够找到对象成员变量的其他示例,但通常会立即调用构造函数,如下所示:
class MyClass {
public:
MyClass(int n);
private:
AnotherClass another(100); // this constructs AnotherClass right away!
};
Run Code Online (Sandbox Code Playgroud)
但我希望MyClass构造函数调用AnotherClass构造函数.这是我的代码的样子:
BigMommaClass.h
#include "ThingOne.h"
#include "ThingTwo.h"
class BigMommaClass {
public:
BigMommaClass(int numba1, int numba2);
private:
ThingOne* ThingOne;
ThingTwo* ThingTwo;
};
Run Code Online (Sandbox Code Playgroud)
BigMommaClass.cpp
#include "BigMommaClass.h"
BigMommaClass::BigMommaClass(int numba1, int numba2) {
this->ThingOne = ThingOne(100);
this->ThingTwo = ThingTwo(numba1, numba2);
}
Run Code Online (Sandbox Code Playgroud)
这是我尝试编译时遇到的错误:
g++ -Wall -c -Iclasses -o objects/BigMommaClass.o classes/BigMommaClass.cpp
In file included from classes/BigMommaClass.cpp:1:0:
classes/BigMommaClass.h:12:8: error: declaration of âThingTwo* BigMommaClass::ThingTwoâ
classes/ThingTwo.h:1:11: error: changes …Run Code Online (Sandbox Code Playgroud) 我需要一个连接,从两个不同的表中生成三个具有相同名称的字段.当我尝试运行我的SQL查询时,VS给了我以下错误.
FROM子句中的对象"PoliticalFigures"和"PoliticalFigures"具有相同的公开名称.使用相关名称来区分它们.
我一直试图用"AS"来区分这些领域,但我还没有找到一个有效的解决方案.这是我正在运行的SQL查询:
SELECT Countries.Name AS Country, PoliticalFigures.Name AS President, PoliticalFigures.Name AS VicePresident FROM Countries
LEFT OUTER JOIN PoliticalFigures ON Countries.President_Id = PoliticalFigures.Id
LEFT OUTER JOIN PoliticalFigures ON Countries.VicePresident_Id = PoliticalFigures.Id
Run Code Online (Sandbox Code Playgroud)
如果从代码中看不出来,这些就是表格.
(注意,我的应用程序中的表和字段有不同的名称.我正在概括它们以使这个例子更清晰,并希望与其他人更相关.)
(我使用的工具是Visual Web Developer 2010 Express和SQL Server 2008 Express.)
我正在尝试使用智能指针为类成员变量创建一个访问器.这是代码:
class MyResource
{
};
class MyClass
{
public:
std::unique_ptr<MyResource> getResource();
private:
std::unique_ptr<MyResource> resource;
};
std::unique_ptr<MyResource> MyClass::getResource()
{
return this->resource;
}
Run Code Online (Sandbox Code Playgroud)
我试图编译这个错误:
无法访问类'std :: unique_ptr <_Ty>'中声明的私有成员
添加.get到this->resource当然不会,因为返回类型的变化工作.
我不应该在这里使用unique_ptr吗?这只是一个语法问题吗?我完全走错了路吗?
我的智能指针背景: 我已经使用了几年的普通指针,部分原因是因为我找不到何时使用哪种智能指针以及如何使用它们的可靠解释.我已经厌倦了找借口,所以我只是潜入.我想我明白智能指针是什么以及为什么要使用它们,但我对细节知之甚少.目前,我完全迷失在关于智能指针的 无尽 问答中 .
就像我可以在ASP.NET MVC中创建指向控制器中的动作(例如 - @Html.ActionLink("MyDisplayText", "MyAction", "MyController"))的ActionLink 一样,我希望能够创建一个带有明确定义的外部URL的超链接.
我正在寻找的是一些像@Html.HyperLink("stackoverflow", "http://www.stackoverflow.com/")这样的代码生成这个HTML:<a href="http://www.stackoverflow.com/">stackoverflow</a>
如果这是不可能的,我总是可以手工编写HTML.
(这是我的第一个stackoverflow问题.多么令人兴奋.)
目的
我正在寻找使用我的IP地址作为URL来调试我的ASP.NET MVC 4应用程序的最简单的逐步设置过程.我希望能够通过我的Android手机访问该应用程序,该手机通过Wi-Fi连接到我的本地网络,使用我的计算机的本地IP地址(例如 - http://192.168.1.109:25968).我在Windows 7上运行Visual Studio 2012 RC.
这个问题已经被另外两个问题(这个问题和这个问题)解决了,但答案非常简短,根本没有帮助我.我之前必须通过敲打我的电脑并盲目地改变每个设置来解决这个问题,直到有效.我不想再经历那次.我想了解这次我在做什么.
设置信息
该项目只是一个默认的ASP.NET MVC 4 Internet应用程序.我很确定我还没改变任何东西.
我的应用程序的属性中的Web选项卡设置为"使用本地IIS Web服务器",并且已选中"使用IIS Express".项目网址是http://localhost:25968/.我看到"locahost"可能存在问题,但VS不会让我输入IP地址或外卡.
我的应用程序的IIS Express applicationhost.config文件如下所示.
<site name="APPLICATION_NAME" id="13">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\Users\USERNAME\Documents\Visual Studio 11\Projects\APPLICATION_NAME" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:25968:localhost" />
</bindings>
</site>
Run Code Online (Sandbox Code Playgroud)
发生了什么
当我从主机连接到该站点时,http://localhost:25968它工作得很好.如果我尝试http://192.168.1.109:25968从主机使用,我收到"错误请求 - 无效主机名,HTTP错误400.请求主机名无效." 使用网络上另一台计算机的相同URL,它只是超时.
我正在开发一个C++项目,需要经常与树结构交互,这意味着许多递归函数,我正在寻找改进代码的方法.前几天我遇到了corecursion,我有兴趣为我的应用程序探索这个策略.
但是,我还没有找到任何如何用C++完成corecursion的例子.为了使我的问题具体,我如何在C++中使用corecursion进行树遍历?
def bf(tree):
tree_list = [tree]
while tree_list:
new_tree_list = []
for tree in tree_list:
if tree is not None:
yield tree.value
new_tree_list.append(tree.left)
new_tree_list.append(tree.right)
tree_list = new_tree_list
Run Code Online (Sandbox Code Playgroud)
如果这样做只是一个坏主意,请告诉我.也就是说,在互联网上得到一些答案对于那些试图在未来做这件事的人来说会很有用.关于SO匹配没有任何问题,[c++] corecursion互联网的其余部分似乎缺乏有关该主题的有用信息.
在VS2012中使用C#.NET与COM互操作,我正在开发一个公共库,用于其他几个程序.为了保持集成简单,我想将整个库保留为一个DLL.该库的一个功能是本地化.它有多种语言的字符串表,每种语言都有自己的ResX文件.
目前,MyLibrary.resources.dll正在为每种语言创建一个并放置在它自己的子目录中,如下所示:
Release\MyLibrary.dll
Release\ja\MyLibrary.resources.dll
Release\fr\MyLibrary.resources.dll
Run Code Online (Sandbox Code Playgroud)
我想看到的只是这个:
Release\MyLibrary.dll
Run Code Online (Sandbox Code Playgroud)
这是我目前的ResX设置.

我已经尝试使用ResXFileCodeGenerator和GlobalResourceProxyGenerator"自定义工具"生成器.我还尝试了一些"Build Action"选项,包括Compile,但到目前为止只有Embedded Resource有效.除此之外,我不知道还有什么可以尝试,或者我是否在正确的轨道上.实际上没有那么多设置可供使用.
我知道在构建DLL之后有很多工具可以做到这一点,但我正在寻找一个编译时解决方案.从维护的角度来看,第三方工具具有挑战性 - 我不会是唯一更新此库的人.
我有大约十几个存储库,文件系统的大小为1 GB到10 GB,我需要为我们的XP 64设置所有这些存储库的自动备份(我们的旧备份脚本在计算机出现故障时丢失)钻头机器.
在阅读了关于备份SVN repos的最佳方法的这个问题后,我开始抛弃我们拥有的最大回购,大约是13 GB.这个命令现在已经执行了大约2.5个小时,并且它目前正在倾倒大约200个300的修订版.
svnadmin --deltas \\path\to\repo\folder > \\path\to\backup\folder\dump.svn
Run Code Online (Sandbox Code Playgroud)
转储文件超过100 GB并且正在计数.我知道我可以7-zip这个吸盘,但100 GB ?! ...... o_O
存储库包含大量二进制数据,这可能是问题的一部分,但截至目前,切换到更有效的版本控制系统(假设有一个)是不现实的; SVN是这里生活的一部分.
我考虑过使用hotcopy,它占用的空间要少得多,但我尝试使用旧的热备份备份,而subversion 1.7找不到它需要的一堆文件.似乎我必须安装最初热门复制repo的SVN版本,并转储该repo以使其进入更新的SVN.这句话似乎验证了我在hotcopy中遇到的问题:http://svn.haxx.se/users/archive-2005-05/0842.shtml
我觉得像我刚才已经有失踪的东西.也许有一些倾倒的标志,神奇地使倾倒1/5大小...
我还有其他选择吗?
更新:最后一个修订版#327刚刚被转储.转储文件的最终大小为127 GB.这是一个13.5 GB的回购.在我的所有存储库中,我可能大约相当于3倍.
我无法使C#代码生成在.NET项目中可靠地工作。我可以得到它来构建EITHER(a)当源文件预先存在时,或者(b)当源文件预先不存在时。在两种情况下,我无法获得相同的设置。
为何如此重要:如果我在开发机器上构建,则可能以前已经构建了代码,因此我需要它来重新生成存在的源代码。但是,在构建机器上构建时,这些文件不存在,因此在这种情况下,我需要它来从头开始生成代码。
复制此文件只需一个csproj和一个源文件。
这是一个引用示例的简单程序GeneratedClass:
class Program
{
public static void Main(string[] args)
{
System.Console.WriteLine(GeneratedClass.MESSAGE);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我可以想到的最简单的csproj文件。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<Target Name="GenerateCode" BeforeTargets="CoreCompile">
<!-- Removing the source code beforehand makes no difference
<Exec Command="rm $(ProjectDir)Generated/*.cs" IgnoreExitCode="true" />
-->
<Exec Command="echo 'class GeneratedClass { public static int MESSAGE = 1; }' > Generated/GeneratedClass.cs" />
<!-- Toggling this setting will cause failures in some scenarios and success in others
<ItemGroup>
<Compile Include="Generated/*$(DefaultLanguageSourceExtension)" />
</ItemGroup> -->
</Target> …Run Code Online (Sandbox Code Playgroud) 最终,我的目标是通过具有唯一链接的自动加载图像来阻止电子邮件跟踪.我知道谷歌使用代理加载图片,所以至少他们不会透露我的IP地址,但有些个人和组织烦人地将跟踪器嵌入他们的电子邮件中 - 他们会主动检查我是否阅读他们的电子邮件.
特别是在Gmail应用中,我可以关闭图片的自动加载功能,但我希望对没有此设置的其他应用提供类似的保护.例如,显然无法通过Google收件箱执行此操作.
我目前的想法是编写一个可以在新邮件上运行的后端脚本(从事件或频繁轮询中接收)将嵌入的HTML图像转换为指向这些图像的超链接链接 - 仅在我真正需要图像时使用.这样,无论我用什么应用程序打开电子邮件,我都可以控制如何/何时跟踪.编辑电子邮件是我用MS Exchange Server API完成的,我正在寻找一种方法来使用Gmail - 通过任何可用的方式.
我在2010年发现了一些关于如何使用Google Apps脚本和Gmail本身修改主题行的线索.当时,您无法做到这一点,但从那时起它们似乎已经更新,或者有使用Gmail API或IMAP的解决方案.
对于我的Gmail帐户,如何以编程方式修改(并保存更改)收到的电子邮件?
可能的解决方案:
完全是图形数据库的新手 - 欢迎更正.
如果我想获得标有"用户"标签的节点列表,neo4j(或可能是其他图形数据库)是否需要搜索该标签的所有节点,或者以某种方式按标签自动索引节点?
如果没有索引,(可怕的性能)会查询每个节点,看看它的任何一个标签是否与"User"匹配,如下所示:
List<Node> userNodes = new List<Node>();
for (Node node : all_nodes)
{
for (Label label : node.labels())
{
if (label.name() == "User")
{
userNodes.Add(node);
// no need to look at other labels for this node
break;
}
}
}
return userNodes;
Run Code Online (Sandbox Code Playgroud)
通过索引,系统会抓取一些系统管理的"节点",其中包含所有标签名称(搜索空间为数十而不是数百万)并抓取其子节点:
List<Node> userNodes = new List<Node>();
for (Node labelNode : labels_node) // where labels_node is system-managed
{
if (labelNode.name() == "User")
{
// All children of the "User" node have the label "User"
userNodes = …Run Code Online (Sandbox Code Playgroud) c# ×3
c++ ×3
asp.net-mvc ×2
.net ×1
.net-core ×1
android ×1
backup ×1
c++11 ×1
constructor ×1
corecursion ×1
csproj ×1
database ×1
git ×1
gmail-api ×1
iis ×1
imap ×1
localization ×1
neo4j ×1
sql ×1
sql-server ×1
svn ×1
windows ×1