2019.11.12的错误集

错误①
  /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/Scrt1.o: In function `_start':
  .text+0x20): undefined reference to `main'
  collect2: error: ld returned 1 exit status
解决:asio.hpp ---> asio.cpp(后缀名问题) //在标准库支持的情况下尽可能使用标准库的功能,而不是boost的功能

错误②
  test.cpp: In function ‘int main()’:
  test.cpp:14:11: error: cannot call member function ‘void A::print()’ without object
  A::print();
解决:这是在没有定义对象的情况下调用了类的成员函数造成的结果。可以在此函数上加static变量,参考signalton。

错误③:
  class A {
    private:
      boost::asio::io_context io_;
      A(boost::asio::io_context& io_context) : io_(io_context) { std::cout << " ok \n" ;}
  };

  int main(){
    boost::asio::io_context io_context;
    A(io);
    io.run();
    return 0;
  }
  test.cpp: In constructor ‘A::A(boost::asio::io_context&)’:
  test.cpp:7:57: error: use of deleted function ‘boost::asio::io_context::io_context(const boost::asio::io_context&)’
  A(boost::asio::io_context& io_context) : io_(io_context) { std::cout << " ok \n" ;}
解决:这是一个连续引用的错误问题,应该把A的成员变量io_,定义为boost::asio::io_context&。
   这是因为在构造函数结束后io_context这个引用变量就失效了。
  例子:

 1     #include<iostream>                                                                   
 2     class A {                                                                            
 3       private:                                                                           
 4         int my_;                                                                         
 5       public:                                                                            
 6         A(int& a):my_(a){                                                                
 7           std::cout << "address a :" << &a << std::endl;    //a是引用                             
 8           std::cout << "address my_:" << &my_ << std::endl; //my_是用引用初始化的值。                     
 9       }                                                                                  
10     };                                                                                   
11     int main(){                                                                          
12       int m = 10;                                                                        
13       std::cout<< "address m :" << &m << std::endl;                                      
14       A o(m);                                                                            
15       return 0;                                                                          
16     }  
    

 

 

 

posted @ 2019-11-12 20:05  Ccluck_tian  阅读(375)  评论(0编辑  收藏  举报