构造错误,在调用对象的方法时无法找到对象
Error with construction, unable to find object when calling its method?
我在下面创建了几个玩具类。在编译过程中,编译器在构造对象时出现问题,但在调用对象的方法时抛出错误。
我已经尝试使用MSVC10和gcc 4.9编译,各自的错误消息是:
- MSVC10:错误C2228: left '。get必须有class/struct/union
- g++ 4.9:错误:请求成员'get'在'test'中,它是非类类型'TestClass(DataContainer)'
有什么问题吗?谢谢!
#include <iostream>
using namespace std;
template <class T>
class Data
{
public:
Data(T i) : d(i)
{}
T get() const {
return d;
}
protected:
T d;
};
class DataContainer
{
public:
DataContainer(const Data<int>& i) : d(i)
{}
const int get() const {
return d.get();
}
protected:
Data<int> d;
};
class TestClass
{
public:
TestClass(const DataContainer& a) : d(a)
{}
int get() {
return d.get();
}
protected:
DataContainer d;
};
int main()
{
Data<int> a(100);
TestClass test(DataContainer(a));
std::cout << test.get() << std::endl;
return 0;
}
然而,这成功地编译了。
int main()
{
Data<int> a(100);
DataContainer cont(a);
TestClass test(cont);
std::cout << test.get() << std::endl;
return 0;
}
看起来很烦人。编译器认为你声明的是一个函数而不是一个对象。
int main()
{
Data<int> a(100);
TestClass test = TestClass(DataContainer(a));
std::cout << test.get() << std::endl;
return 0;
}
相关文章:
- 使用std::函数映射对象方法
- 正在调用shared_ptr对象方法
- 检查哪个对象调用了另一个对象的对象方法
- 如何在C++中循环访问未知对象方法?
- c++ 替换调用对象方法的宏函数
- 我能否通过将函数实现为类对象方法来避免使用互斥锁
- 我可以制作一个对象方法,如果单独调用,它将自行修改,但如果在复制初始化期间调用,则会返回一个新对象?
- 如何让两个不同的对象方法相互用作参数
- 在创建 c++ 期间调用对象方法
- 扩展中的日期时间对象方法C++问题
- 将对象方法从向量应用于C 的第二个向量中的对象
- 将 C++/CLI 对象指针传递给本机对象方法
- 多态性的面向对象方法
- 将对象方法传递到变量
- C :使用Main中定义的对象方法的函数
- 有关使用矢量迭代器访问对象方法的问题
- 定义可以执行对象方法和独立函数的函数时出现问题
- 调用列表中子对象方法的最佳方法
- main.cpp:(.text+0x8f):对[对象方法]的未定义引用
- cpp 从需要超类对象的函数访问子类对象方法