我正在玩继承的构造函数,但是当我尝试从 std::string 继承时,我很难理解为什么 gcc 会抱怨。
我知道这不是最佳实践,应该不惜一切代价避免它,所以在为此大喊大叫之前,我没有在任何地方实施它:-) 这只是出于好奇。
我还用一个简单的已定义类尝试了相同的场景,但我没有同样的问题。
#include <string>
#include <vector>
#include <iostream>
using namespace std;
template <typename T>
struct Wrapper : public T
{
using T::T;
};
struct A{
A(int a) : _a(a) {}
int _a;
};
int main()
{
Wrapper<string> s("asd"); //compiles
string a = "aaa";
Wrapper<string> s2(a); //does not compile
Wrapper<A> a(1);
int temp = 1;
Wrapper<A> b(temp);
}
实际错误的摘录:
main.cpp:25:24:错误:没有匹配的调用函数
'Wrapper<std::basic_string<char> >::Wrapper(std::string&)'
Wrapper<string> s2(a);