这是代码示例,它可以重现我的问题:
template <typename myType>
class Base {
public:
Base() {}
virtual ~Base() {}
protected:
int myOption;
virtual void set() = 0;
};
template <typename InterfaceType>
class ChildClass : public Base < std::vector<InterfaceType> >
{
public:
ChildClass() {}
virtual ~ChildClass() {}
protected:
virtual void set();
};
template <typename InterfaceType>
void ChildClass<InterfaceType>::set()
{
myOption = 10;
}
Run Code Online (Sandbox Code Playgroud)
我的用法main():
ChildClass<int> myObject;
Run Code Online (Sandbox Code Playgroud)
我收到以下错误(ubuntu上的gcc 4.4.3):
'myOption'未在此范围内声明
如果我的ChildClass没有新的模板参数,这将工作正常,即:
class ChildClass : public Base < std::vector<SomeConcreteType> >
Run Code Online (Sandbox Code Playgroud)
如果我的set方法如下所示,我已设法解决它:
Base<std::vector<InterfaceType> >::myOption = 10;
Run Code Online (Sandbox Code Playgroud)
它工作正常.尽管不确定为什么我需要指定所有模板参数.
经历了很多问题,但似乎没有什么能解决我的问题.或者更确切地说,我不确定我是否正确地做了整件事.所以这里是:
安装了centos 6.3 OS.然后我按照以下指南安装jenkins:
https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+RedHat+distributions
詹金斯工作正常.现在我正在尝试设置一个简单的构建作业,这需要克隆一个git存储库.(我已经安装了git插件)
在存储库URL中,我键入以下内容:git @ gitserver:myrepo.git当然我收到错误:stderr:主机密钥验证失败.
好的,我需要生成ssh密钥,一切都会好的.所以我做了以下事情:
su - jenkins
Run Code Online (Sandbox Code Playgroud)
但不幸的是它没有切换到jenkins用户.
cat/etc/passwd
显示以下内容:
jenkins:x:496:492:Jenkins Continuous Build Server:/var/lib/jenkins:/bin/false
Run Code Online (Sandbox Code Playgroud)
所以似乎它没有通常的主目录.
问题是我如何为jenkins生成密钥,或者如果上述步骤没有正确的方法,我该如何解决?
非常感谢!
更新:我生成了密钥(作为root用户)并将它们放在jenkins主页中并完全将公钥复制到git服务器.仍然没有帮助.
当我查看构建日志时,它说:
Started by user anonymous
Building in workspace /var/lib/jenkins/jobs/myrepo/workspace
Run Code Online (Sandbox Code Playgroud)
这个用户匿名是由jenkins创建的另一个用户,还是仍然运行命令的jenkins?
尝试将 rest api 用于谷歌数据存储(不幸的是,没有用于 C++ 的客户端库)。在插入实体时卡住了。
阅读文档,不幸的是不是很好(至少对于 REST)。它没有说明 URI 是什么,所以我猜它是以下内容:
发布https://datastore.googleapis.com/v1/projects/ {projectId}:Entity
但不幸的是,我得到了答复:/v1/projects/my_project_id:Entity在此服务器上找不到请求的 URL 。
有人在/正在使用它吗?任何帮助,将不胜感激。谢谢!
我正在尝试构建我的第一个rpm包,它是一个简单的可执行文件(mysh)。
我的规格文件:
Summary: bla <br>
Name: mysh <br>
Version: 1.0 <br>
Release: 1 <br>
Group: Applications <br>
Source: mysh-1.0.tar.gz <br>
URL: http://www.google.com <br>
Vendor: tadas sofware inc. <br>
Packager: tadas <br>
License: GPL
%description <br>
a very good program!
%prep <br>
rm -rf $RPM_BUILD_DIR/mysh-1.0 <br>
zcat $RPM_SOURCE_DIR/mysh-1.0.tar.gz | tar -xvf -
%build <br>
make
%install <br>
cp mysh /usr/local/bin/mysh
%files <br>
/usr/local/bin/mysh
Run Code Online (Sandbox Code Playgroud)
失败并显示以下错误:
cd: 8: can't cd to /home/tadzys/rpm/BUILDROOT/mysh-1.0-1.x86_64
Run Code Online (Sandbox Code Playgroud)
当然该文件不存在。我尝试将其复制到那里仍然存在相同的错误。不知道我的安装部分是否应将任何内容放到BUILDROOT文件夹中。
我在Ubuntu 11.04上。
我对此感到困惑:在生产中,我们有两个进程通过共享内存进行通信,数据交换的一部分是漫长的,而且是一个bool.对此数据的访问不同步.它已经很好地工作了很长时间,现在仍然如此.我知道修改一个值不是原子的,但考虑到这些值被修改/访问了数百万次,这不得不失败?
这是一段代码示例,它在两个线程之间交换一个数字:
#include <pthread.h>
#include <xmmintrin.h>
typedef unsigned long long uint64;
const uint64 ITERATIONS = 500LL * 1000LL * 1000LL;
//volatile uint64 s1 = 0;
//volatile uint64 s2 = 0;
uint64 s1 = 0;
uint64 s2 = 0;
void* run(void*)
{
register uint64 value = s2;
while (true)
{
while (value == s1)
{
_mm_pause();// busy spin
}
//value = __sync_add_and_fetch(&s2, 1);
value = ++s2;
}
}
int main (int argc, char *argv[])
{
pthread_t threads[1];
pthread_create(&threads[0], NULL, run, NULL); …Run Code Online (Sandbox Code Playgroud) 我对这段代码的行为感到困惑。
const char* file_name = "/ /";
auto attributes = GetFileAttributes(TEXT(file_name)); // same result without TEXT macro
if (attributes == INVALID_FILE_ATTRIBUTES)
{
//error
}
else if (attributes == FILE_ATTRIBUTE_DIRECTORY)
{
//directory
}
Run Code Online (Sandbox Code Playgroud)
这是文件或目录的无效名称,因此我希望它返回 INVALID_FILE_ATTRIBUTES。用VS2015编译运行在win8上。也许这是因为前向字符?也许有一个 winAPI 函数来验证输入?
谢谢
我有两个静态库(a.lib和b.lib)内部,库a有类Foo,但它没有在任何公开可用的包含中公开.库b.lib也有类Foo,它也没有在接口中公开.这些类位于同一名称空间中,并具有相同的构造函数签名.
当我调试或运行可执行文件(使用两个库)时,我发现错误的类lib a而不是lib b创建.试图了解这是如何发生的.这是链接器问题吗?(即类名是相同的,链接器插入它先找到的任何东西)