이 매우 간단한 코드를 고려해C++ 함수 정의와 변수 선언 불일치?
#include <memory>
class Foo
{
public:
Foo() {};
};
class Bar
{
public:
Bar(const std::shared_ptr<Foo>& foo) {}
};
int main()
{
Foo* foo = new Foo;
Bar bar(std::shared_ptr<Foo>(foo));
return 0;
}
비주얼 스튜디오는
warning C4930: 'Bar bar(std::shared_ptr<Foo>)': prototyped function not called (was a variable definition intended?)
를보고하고 ... 방법이 라인은 함수 정의로 해석 될 Bar bar(std::shared_ptr<Foo>(foo));
수 있습니다 생성되지 않음 bar
오브젝트가 존재하지 않는 이유는 무엇입니까?
Foo()
도
Bar()
을 사용하지 않은 여기에 다른 느낌.
편집 : 성공적으로 컴파일합니다 :
이Foo* foo = new Foo;
std::shared_ptr<Foo> fooPtr(foo);
Bar bar(fooPtr);
C++에서 가장 까다로운 구문 분석. –
@ 眠 り ネロ ク 아니, gcc가 –
@RichardHodges를 컴파일하므로 MSVC도 경고입니다.眠り ネロ ク가 맞습니다. – Quentin