我有一个头文件,我在其中定义了一个类,并使用了unique_ptr来访问类成员 但我不知道如何从clone.cpp访问它 通常,我们所做的是创建类的对象 例如:
A obj;
bool res = obj.concate("hello");
我们怎样才能使用unique_ptr?
当我想要做的时候
bool result = access->concate("hello");
我收到以下错误:
Undefined symbols for architecture x86_64: "obja()", referenced from: _main in classA.o ld: symbol(s) not found for architecture x86_64
clone.h
--------
std::unique_ptr<class A> obja();
class A
{
public:
bool concate(string str){
string a = "hello";
return a == str;
}
private:
string b = "world";
};
clone.cpp
________
int main(){
auto access = obja();
return 0;
}
答案 0 :(得分:0)
您在std::unique_ptr<class A> obja();
中不需要 class ,与括号相同。
不确定你想在这里实现什么:auto access = obja();
我假设你试图在那里调用concate,然后一切都可以这样:
class A
{
public:
bool concate(string str) {
string a = "hello";
return a == str;
}
private:
string b = "world";
};
std::unique_ptr<A> obja;
int main() {
auto access = obja->concate("test");
return 0;
}
答案 1 :(得分:0)
class A
{
public:
bool concate(string str) { string a = "hello"; return a == str; }
private: string b = "world";
};
std::unique_ptr<A> obja = std::make_unique <A>;
int main() {
auto access = obja->concate("test"); return 0;
}
你忘了分配内存。 :)