小编you*_*ing的帖子

关于隐藏符号被DSO引用的警告意味着什么?

我有一个问题链接一些共享库与g ++.它给了我一个警告:

hidden symbol XXX in YYY is referenced by DSO /usr/lib/...
Run Code Online (Sandbox Code Playgroud)

我已经阅读了一些关于特定问题的相关问题,但我想在整体上理解它 - 这个警告意味着什么,原因是什么:

  1. 什么是DSO?
  2. 什么是隐藏的符号?
  3. 如果被隐藏的话怎么引用呢?

c++ linker gcc shared-libraries elf

32
推荐指数
1
解决办法
2万
查看次数

num_get facet和stringstream转换为boolean - 失败并初始化布尔值?

我继承了一个模板来将字符串转换为数值,并希望将其应用于转换为布尔值.我对stringstream和locale类不太熟悉.我似乎得到了一些奇怪的行为,我想知道是否有人可以向我解释一下?

template<typename T> T convertFromString( const string& str ) const {

std::stringstream SStream( str );  
T num = 0; 
SStream >> num;

return num;  
}  
Run Code Online (Sandbox Code Playgroud)

这工作正常,直到我尝试布尔转换

string str1("1");
int val1 = convertFromString<int>(str1); // ok
string str2("true");
bool val2 = convertFromString<bool>(str2); // val2 is _false_
Run Code Online (Sandbox Code Playgroud)

我花了一些时间来追查问题.我已经确认locale的truename()返回"true".

问题似乎是变量num的初始化.我可以将模板更改为此,它可以工作:

template<typename T> T convertFromString( const string& str ) const {

std::stringstream SStream( str );  
T num;  // <----------------------- Changed here
SStream >> num;

return num;  
}  
string str2("true");
bool val2 …
Run Code Online (Sandbox Code Playgroud)

c++ templates initialization std stringstream

2
推荐指数
1
解决办法
1625
查看次数

如何使用std :: transform和模板

我正在努力找出为什么我无法转换为使用模板类.

这是模板类的简化版本:

template<typename T>
class base
{
public :
  base() : all_() {}
  ~base() {}
public:
  bool add(T t)
  {
    typename vector<T>::iterator itr 
      = lower_bound(all_.begin(), all_.end(), t);
    if ( itr == all_.end() || *itr != t )
      {
        all_.push_back(t);
        cout << "ok" << endl;
        return true;
      }
    cout << "failed" << endl;
    return false;
  }
  static bool addTo(base<T> *c, T t)
  {
    return c->add(t);
  }
private :
  vector<T> all_;
};
Run Code Online (Sandbox Code Playgroud)

这是我尝试使用transform来捕获add成员函数的所有bool输出的地方:

main()
{
  base<int> test;
  vector<bool> results;
  vector<int> toAdd;
  toAdd.push_back(10); …
Run Code Online (Sandbox Code Playgroud)

c++ templates stl stl-algorithm

1
推荐指数
1
解决办法
891
查看次数