如何使用unique_ptr访问C ++中的类成员和类变量

时间:2017-10-06 16:44:53

标签: c++ c++11

我有一个头文件,我在其中定义了一个类,并使用了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;
}

2 个答案:

答案 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;
 }

你忘了分配内存。 :)