1
我試圖創建一個設置函數,它將採用共享指針並將其設置爲等於另一個共享指針。C++共享指針問題
這是共享指針和我有我的頭文件中聲明所設定的功能
class Shape
{
public:
Shape();
Gdiplus::Point start;
Gdiplus::Point end;
std::shared_ptr<Gdiplus::Pen> m_pen;
virtual LRESULT Draw(Gdiplus::Graphics * m_GraphicsImage) = 0;
void setPen(std::shared_ptr<Gdiplus::Pen> pen2);
void setStart(int xPos, int yPos);
void setEnd(int xCor, int yCor);
};
,但是當我試圖實現它在我的cpp我得到一個錯誤,說我的「的聲明是不兼容在.h上聲明的void setPen「。它也表示m_pen在我的cpp文件中是未經驗證的。
#include<memory>
#include "stdafx.h"
#include "resource.h"
#include "ShapeMaker.h"
void Shape::setPen(std::shared_ptr<Gdiplus::Pen> pen2)
{
m_pen = pen2;
}
void Shape::setStart(int xPos, int yPos)
{
start.X = xPos;
start.Y = yPos;
}
void Shape::setEnd(int xCor, int yCor)
{
end.X= xCor;
end.Y = yCor;
}
這就是我所有的。該stdax.h包括
#include <atlwin.h>
#include <atlframe.h>
#include <atlctrls.h>
#include <atldlgs.h>
#include <atlctrlw.h>
#include <atlscrl.h>
#include <GdiPlus.h>
錯誤,我得到:
shapemaker.h(11): error C2039: 'shared_ptr' : is not a member of 'std'
shapemaker.h(11): error C2143: syntax error : missing ';' before '<'
shapemaker.h(11): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
shapemaker.h(11): error C2238: unexpected token(s) preceding ';'
.h(16): error C2039: 'shared_ptr' : is not a member of 'std'
shapemaker.h(16): error C2061: syntax error : identifier 'shared_ptr'
shapemaker.cpp(9): error C2511: 'void Shape::setPen(std::tr1::shared_ptr<_Ty>)' : overloaded member function not found in 'Shape'
你能展示這個實現嗎? – 2013-03-27 01:50:25
實際上看到它正在抱怨的行是很方便的,以便我們可以將它與聲明進行比較。 – chris 2013-03-27 01:50:26
那裏它去的傢伙。對不起,那 – user1665569 2013-03-27 01:52:38