构造函数(g ++)的显式模板专业化

时间:2018-10-04 15:59:52

标签: c++ templates

我在.h文件中有此类定义:

class PolygonPath
{
  public:
    template<class T> explicit PolygonPath(const Polygon<T> &);
    template<class T> Polygon<T> toPolygon() const;
}

在.cpp文件中,我定义了我的方法。然后,我想为Polygon<float>Polygon<long>定义显式模板。所以,我这样定义它们:

template class PolygonPath::PolygonPath<float>(const Polygon<float> &); //Fail
template class Polygon<float> PolygonPath::toPolygon<float>() const; //Ok
template class PolygonPath::PolygonPath<long>(const Polygon<long> &); //Fail
template class Polygon<long> PolygonPath::toPolygon<long>() const; //Ok

对于构造函数,我无法定义显式模板专业化。编译时出现以下错误:“ 错误:'PolygonPath'不是类模板”。 我也尝试使用以下语法:

template <> PolygonPath::PolygonPath(const Polygon<float> &)

它可以编译,但是在链接上出现另一个错误:“对`urchin :: PolygonPath :: PolygonPath(urchin :: Polygon const&)'的未定义引用。”

1 个答案:

答案 0 :(得分:4)

从构造函数的显式实例中删除START RequestId: 7c759123-a7d0-11e8-b4a4-318095fdonutz Version: $LATEST END RequestId: 7c759123-a7d0-11e8-b4a4-318095fdonutz REPORT RequestId: 7c759123-a7d0-11e8-b4a4-318095fdonutz Duration: 109.21 ms Billed Duration: 200 ms Memory Size: 128 MB Max Memory Used: 46 MB

from selenium import webdriver driver=webdriver.Chrome(executable_path=r"C:\webdrivers\chromedriver.exe") driver.get(r.url) dropdown=driver.find_elements_by_class_name("expandArrow") for arrow in dropdown: arrow.click() html_source = driver.page_source print(html_source)

class