客户端
#ifndef TEST_CLIENT_H_
#define TEST_CLIENT_H_
#include <memory>
class SimpleClient {
public:
virtual int GetProgress() const = 0;
virtual char* CutPrefix(char* data) = 0;
virtual ~SimpleClient() {}
};
std::shared_ptr<SimpleClient> CreateSimpleClient();
#endif // TEST_CLIENT_H_
Client.cpp
#include "client.h"
namespace {
class SimpleClientImpl : public SimpleClient {
private:
int progress_counter_;
public:
SimpleClientImpl() : progress_counter_(0) {}
int GetProgress() const;
char* CutPrefix(char* data);
};
int SimpleClientImpl::GetProgress() const {
return progress_counter_;
}
char* SimpleClientImpl::CutPrefix(char* data) {
progress_counter_++;
return data + *reinterpret_cast<size_t*>(data) + sizeof(size_t);
}
} // namespace
std::shared_ptr<SimpleClient> CreateSimpleClient() {
return std::shared_ptr<SimpleClient>(new SimpleClientImpl);
}
我尝试编译:g ++ -c client.cpp并出现以下错误
在client.cpp:2包含的文件中:
client.h:13:错误:“ –”标记之前的预期构造函数,析构函数或类型转换
client.cpp:27:错误:“ –”标记之前的预期构造函数,析构函数或类型转换
我从各种文章中了解到应该与鹅库链接,但不知道如何使用它。
这是我正在使用的编译器版本:
g ++ -v
使用内置规格。
目标:x86_64-redhat-linux
配置为:../configure --prefix = / usr --mandir = / usr / share / man --infodir = / usr / share / info --with-bugurl = http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable -shared --enable-threads = posix --enable-checking = release --with-system-zlib --enable -__ cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-languages = c,c ++,objc,obj-c ++,java,fortran,ada --enable-java-awt = gtk --disable-dssi --with-java-home = / usr / lib / jvm / java-1.5.0- gcj-1.5.0.0 / jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar = / usr / share / java / eclipse-ecj.jar --disable-libjava-multilib --with-ppl --with-cloog --with-tune = generic --with-arch_32 = i686 --build = x86_64-redhat-linux
螺纹型号:posix
gcc版本4.4.5 20101112(Red Hat 4.4.5-2)(GCC)
有人可以帮我吗。
最佳答案
对于较旧的编译器,您应该在编译器标志中添加-std = c ++ 0x而不是-std = c ++ 11。
关于c++ - 如何编译使用shared_ptr的程序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26727940/